58 votes

Empêcher les signaux de tir dans Qt

Nous avons un objet QCheckBox , lorsque l'utilisateur le vérifie ou supprime la vérification, nous voulons appeler une fonction afin que nous connections notre fonction au signal stateChanged ( int state ) D'un autre côté, selon certaines conditions, nous modifions également l'état de l'objet QCheckBox intérieur du code, ce qui provoque le signal indésirable.

Existe-t-il un moyen d'empêcher le signal de déclenchement dans certaines conditions ?

14voto

liaK Points 6045

Vous pouvez QObject::disconnect pour supprimer la connexion signal-slot correspondante et pouvez à nouveau QObject::connect une fois que vous avez terminé...

6voto

ZestyMeta Points 71

Dans les QObject , vous pouvez appeler blockSignals(bool) pour empêcher l'objet d'émettre des signaux. Alors par exemple :

 void customChangeState(bool checked)
{
    blockSignals(true);
    ui->checkBox->setCheckState(Qt::Checked);
    // other work
    blockSignals(false);
}

La méthode ci-dessus modifierait l'état de vérification sans cliquer, stateChanged , ou tout autre signal émis.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X