2010-07-06 13 views
4

J'ai un QCheckBox dans une mise en page de la grille définie comme telle:Modifier la position case à cocher pour une QCheckBox

self.isSubfactorCheckbox = QtGui.QCheckBox('Is &subfactor', self) 

Par défaut, la case est à gauche du texte « est sous-facteur ». Je souhaite le déplacer vers la droite du texte.

J'ai essayé de jouer avec la position de sous-contrôle mais en vain.

self.isSubfactorCheckbox.setStyleSheet('QCheckBox::indicator{subcontrol-origin: content; subcontrol-position: top right;}') 

Cela déplace la case située à droite (il est toujours à gauche du texte) mais il pousse le texte à droite et sur le bord de la fenêtre.

Cela n'a pas aidé à déplacer le texte à droite:

self.isSubfactorCheckbox.setStyleSheet('QCheckBox::text{subcontrol-origin: content; subcontrol-position: top left; }') 

Une solution serait de créer un QLabel et en ajoutant la case à sa droite, mais je n'ai pas pas trouvé un moyen de souligner les lettres dans un QLabel afin que l'utilisateur sache quelle est la touche de raccourci. J'ai essayé de préfixer des lettres avec & ou en les enveloppant dans des étiquettes <u> </u>.

Je préférerais toujours utiliser uniquement un QLabel, mais comment changer la case à cocher à droite du texte sans que le texte ne soit expulsé.

Répondre

4

Utilisez le mécanisme de jumelage. Définissez le QCheckBox sur le partenaire du QLabel. Après ce préfixe & soulignera le caractère de raccourci dans l'étiquette. Voir la documentation du QLabel's setBuddy.

+0

Ça a bien fonctionné. Je vous remercie! – yoshi

18

Encore plus facile ...

Utilisez la méthode QWidget.setLayoutDirection et mettez-rightToLeft contre LeftToRight

Vous pouvez le faire dans Designer ou par le code, il est une propriété ou tous les widgets.

+0

Le seul problème avec cette solution, c'est que tout le texte devient justifié à droite. Pour vraiment avoir l'apparence des cases à cocher/bascules sur les nouveaux gui, vous devez utiliser QFormLayout avec 'QFormLayout :: addRow (nouveau QLabel (" Text "), checkbox)'. – phyatt