Une liste de cases à cocher dans PyQt
Je veux afficher un QListView où chaque élément est une case à cocher avec une certaine étiquette. Les cases à cocher doivent être visibles en tout temps. Une façon, je pense, à l'aide d'un délégué personnalisé et QAbstractListModel. Existe-il des moyens plus simples? Pouvez-vous fournir le plus simple morceau de code qui fait cela?
Merci d'avance
OriginalL'auteur Eli Bendersky | 2009-05-11
Vous devez vous connecter pour publier un commentaire.
Si vous écrivez votre propre modèle, il suffit d'inclure le
Qt.ItemIsUserCheckable
drapeau de la valeur de retour de la
flags()
méthode, et assurez-vous de retourune valeur valide pour le
Qt.CheckStateRole
de ladata()
méthode.Si vous utilisez le
QStandardItemModel
classe, comprennent laQt.ItemIsUserCheckable
pavillon dans les de passer de chaque élément
setFlags()
méthode, et sélectionnez la case àétat de la
Qt.CheckStateRole
avec sessetData()
méthode.Interactif Python session, tapez la commande suivante:
OriginalL'auteur David Boddie
J'ai fini par utiliser la méthode fournie par David Boddie dans le PyQt liste de diffusion. Voici un travail extrait de code basé sur son code:
Remarque: modification de l'appel de
setData
avec un chèque rôle desetCheckState
et utilisésetCheckable
au lieu de drapeaux.pour répondre à moi-même,
model.itemChanged
peut être utilisé, comme indiqué ici: pythoncentral.io/...OriginalL'auteur Eli Bendersky