2013-07-23 4 views

Répondre

3

J'ai fait quelques recherches. Le widget Calendrier contient une sous-classe (QCalendarView) avec un modèle standard (QCalendarModel). Ma tentative a été d'ajouter un modèle de proxy pour la vue et de modifier les fonctions data() et flags() pour retourner l'état désactivé pour les dates que je voulais désactiver. Mais j'avais besoin de savoir quelle date est affichée sur une cellule. Il y a QCalendarModel::dateForCell méthode pour cela, mais il est inaccessible à partir du code. C'est plutôt compliqué et dépend de l'implémentation de QCalendarModel.

Donc, je pense que ce n'est guère possible. La seule façon que je vois est de copier la source QCalendarWidget à votre projet et de renommer les classes pour éviter les conflits le long des classes Qt existantes. Ensuite, vous pouvez modifier l'implémentation. Dans tout lieu où la date minimale et maximale est utilisée (par exemple, dans la fonction QCalendarModel::flags), vous devez la remplacer par l'utilisation de votre liste de classes activée/désactivée.

Si vous trouvez quelque chose d'utile dans ma tentative, j'ai publié le code here. Le modèle de proxy est incepté et l'arrière-plan de toutes les cellules est rendu vert.

+0

Beaucoup de remerciements pour votre réponse, désolé pour ma réponse en retard. Je vais essayer votre solution la semaine prochaine et examiner votre code source. –

Questions connexes