2017-05-31 4 views
-2

J'ai un groupe de boutons radio. Ceux-ci sont tous connectés à la même SLOT(updateImage()).Qt Radio Bouton seulement appel SLOT() lorsque le bouton est réellement vérifié

Voilà comment ils sont mis en place:

connect(m_radio1, SIGNAL(toggled(bool)), this, SLOT(updateImage()); 
connect(m_radio2, SIGNAL(toggled(bool)), this, SLOT(updateImage()); 
connect(m_radio3, SIGNAL(toggled(bool)), this, SLOT(updateImage()); 

Lorsque vous modifiez le bouton radio de l'un à l'autre, ce SLOT() est appelé deux fois, une fois pour désélectionnant le bouton radio sélectionné précédemment, et une fois pour la sélection le bouton radio cliqué.

Je me demandais, est-il un moyen de modifier mon SLOT() pour ne se produire dans l'un de ces cas, lorsque l'élément cliqué est vérifié?

Merci

Répondre

3

Vous demandez de se connecter au basculées le signal - vous êtes appelés à chaque fois que l'objet est basculée. Qu'est-ce qui est surprenant?

Vous pouvez vous connecter au signal "cliqué" qui fournit un argument "vérifié" que vous pouvez tester.

Btw; Si vous utilisez une version Qt moderne, vous devez abandonner les macros SIGNAL et SLOTS et utiliser à la place la nouvelle syntaxe connect() vérifiée lors de la compilation.

2

Puisque votre signal a un paramètre bool.

toggled(bool) 

Vous pouvez ajouter ce paramètre à votre méthode SLOT. Vérifiez ensuite si le paramètre est coché.