QSignalBlocker Class
Enveloppe d'exception autour de QObject::blockSignals(). Plus...
| En-tête : | #include <QSignalBlocker> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake : | QT += core |
Note : Toutes les fonctions de cette classe sont réentrantes.
Fonctions publiques
| QSignalBlocker(QObject *object) | |
| QSignalBlocker(QObject &object) | |
| QSignalBlocker(QSignalBlocker &&other) | |
| ~QSignalBlocker() | |
(since 6.7) void | dismiss() |
| void | reblock() |
| void | unblock() |
| QSignalBlocker & | operator=(QSignalBlocker &&other) |
Description détaillée
QSignalBlocker peut être utilisé partout où vous utiliseriez une paire d'appels à QObject::blockSignals(). Il bloque les signaux dans son constructeur et, dans son destructeur, il réinitialise l'état à ce qu'il était avant l'exécution du constructeur.
{
const QSignalBlocker blocker(someQObject);
// no signals here
}est donc équivalent à
const bool wasBlocked = someQObject->blockSignals(true); // no signals here someQObject->blockSignals(wasBlocked);
sauf que le code utilisant QSignalBlocker est sûr face aux exceptions.
Voir également QMutexLocker et QEventLoopLocker.
Documentation sur les fonctions membres
[explicit noexcept] QSignalBlocker::QSignalBlocker(QObject *object)
Constructeur. Appelle object->blockSignals(true).
[explicit noexcept] QSignalBlocker::QSignalBlocker(QObject &object)
Appelle object.blockSignals(true).
Il s'agit d'une fonction surchargée.
[noexcept] QSignalBlocker::QSignalBlocker(QSignalBlocker &&other)
Move-construit un bloqueur de signaux à partir de other. other aura un destructeur no-op, tandis que la responsabilité de restaurer l'état de QObject::signalsBlocked() est transférée au nouvel objet.
[noexcept] QSignalBlocker::~QSignalBlocker()
Destructeur. Restaure l'état de QObject::signalsBlocked() tel qu'il était avant l'exécution du constructeur, à moins que unblock() n'ait été appelé sans reblock() suivant, auquel cas il ne fait rien.
[noexcept, since 6.7] void QSignalBlocker::dismiss()
Lève le QSignalBlocker. Il n'accèdera plus au QObject passé à son constructeur. unblock(), reblock(), ainsi que ~QSignalBlocker() n'auront aucun effet.
Cette fonction a été introduite dans Qt 6.7.
[noexcept] void QSignalBlocker::reblock()
Re-bloque les signaux après un précédent appel à unblock().
Les nombres d'appels à reblock() et à unblock() ne sont pas comptés, de sorte que chaque reblock() annule n'importe quel nombre d'appels à unblock().
[noexcept] void QSignalBlocker::unblock()
Rétablit temporairement l'état de QObject::signalsBlocked() tel qu'il était avant l'exécution du constructeur de QSignalBlocker. Pour annuler, utilisez reblock().
Le nombre d'appels à reblock() et à unblock() n'est pas compté, donc chaque unblock() annule n'importe quel nombre d'appels à reblock().
[noexcept] QSignalBlocker &QSignalBlocker::operator=(QSignalBlocker &&other)
Move-assigns this signal blocker from other. other will have a no-op destructor, while responsibility for restoring the QObject::signalsBlocked() state is transferred to this object.
Les signaux de l'objet que ce bloqueur de signaux bloquait avant d'être déplacé, le cas échéant, sont débloqués , sauf dans le cas où les deux instances bloquent les signaux du même objet et que *this est débloqué alors que other ne l'est pas, au moment du déplacement.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.