2009-10-07 5 views
0

J'utilise un QPushButton dans une application S60 Qt.Comment changer une icône QPushButton quand elle a le focus?

Je veux que l'icône du bouton change quand il a le focus.

J'ai essayé ce ...

navButton->setStyleSheet("background-image: url(c:/Data/navArrowsNotSelected.png);"); 
setStyleSheet("DoubleViewWidget QPushButton:focus {background-image: url(c:/Data/navArrowsSelected.png); border: 2px solid yellow}"); 

... mais l'image d'arrière-plan ne change pas le focus.

J'ai également essayé d'autres approches, en utilisant QPalette, etc., mais je n'arrive pas à faire fonctionner ça.

Existe-t-il un moyen de sélectionner un style de mise au point pour un widget?

... ou existe-t-il un autre moyen de le faire?

Répondre

3

Vous ne pouvez pas définir une feuille de style directement sur le bouton et une autre sur le widget parent. Le bouton sera préféré. Essayez ceci:

navButton->setStyleSheet("QPushButton { background-color:red; } QPushButton:focus { background-color:blue; }"); 
+0

Merci! Cela a fonctionné: navButton-> setStyleSheet ("QPushButton {image-arrière-plan: URL (c: /Data/myIconNotSelected.png);} QPushButton: focus {background-image: URL (c: /Data/myIconSelected.png); 2px jaune solide;} "); –

0

Je ne peux rien dire au sujet de le faire à travers la feuille de style, mais vous pouvez utiliser les approches suivantes:

1) Subclassing QPushButton et réimplémentez focusInEvent et focusOutEvent (membres protégés)

2) Une autre approche consiste à faire "void QPushButton :: installEventFilter (QObject * filterObj)" sur l'instance du bouton poussoir (filterObj implémentera la gestion des événements de focus personnalisés)

Questions connexes