QSignalBlocker Class
Envoltorio a prueba de excepciones alrededor de QObject::blockSignals(). Más...
| Cabecera: | #include <QSignalBlocker> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core)target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
Nota: Todas las funciones de esta clase son reentrantes.
Funciones Públicas
| QSignalBlocker(QObject *object) | |
| QSignalBlocker(QObject &object) | |
| QSignalBlocker(QSignalBlocker &&other) | |
| ~QSignalBlocker() | |
(since 6.7) void | dismiss() |
| void | reblock() |
| void | unblock() |
| QSignalBlocker & | operator=(QSignalBlocker &&other) |
Descripción Detallada
QSignalBlocker se puede utilizar en cualquier lugar donde de otro modo se utilizaría un par de llamadas a QObject::blockSignals(). Bloquea señales en su constructor y en el destructor restablece el estado al que estaba antes de que se ejecutara el constructor.
{
const QSignalBlocker blocker(someQObject);
// no signals here
}es por tanto equivalente a
const bool wasBlocked = someQObject->blockSignals(true); // no signals here someQObject->blockSignals(wasBlocked);
excepto que el código que utiliza QSignalBlocker es seguro frente a excepciones.
Ver también QMutexLocker y QEventLoopLocker.
Documentación de Funciones Miembro
[explicit noexcept] QSignalBlocker::QSignalBlocker(QObject *object)
Constructor. Llama a object->blockSignals(true).
[explicit noexcept] QSignalBlocker::QSignalBlocker(QObject &object)
Llama a object.blockSignals(true).
Se trata de una función sobrecargada.
[noexcept] QSignalBlocker::QSignalBlocker(QSignalBlocker &&other)
Move-construye un bloqueador de señales a partir de other. other tendrá un destructor no-op, mientras que la responsabilidad de restaurar el estado QObject::signalsBlocked() se transfiere al nuevo objeto.
[noexcept] QSignalBlocker::~QSignalBlocker()
Destructor. Restaura el estado de QObject::signalsBlocked() al que tenía antes de que se ejecutara el constructor, a menos que se haya llamado a unblock() sin un siguiente reblock(), en cuyo caso no hace nada.
[noexcept, since 6.7] void QSignalBlocker::dismiss()
Desecha el QSignalBlocker. Ya no accederá al QObject pasado a su constructor. unblock(), reblock(), así como ~QSignalBlocker() no tendrán efecto.
Esta función se introdujo en Qt 6.7.
[noexcept] void QSignalBlocker::reblock()
Vuelve a bloquear señales después de una llamada anterior a unblock().
Los números de llamadas a reblock() y unblock() no se cuentan, por lo que cada reblock() deshace cualquier número de llamadas a unblock().
[noexcept] void QSignalBlocker::unblock()
Restaura temporalmente el estado de QObject::signalsBlocked() a como estaba antes de que se ejecutara el constructor de QSignalBlocker. Para deshacer, utilice reblock().
El número de llamadas a reblock() y unblock() no se cuenta, por lo que cada unblock() deshace cualquier número de llamadas a reblock().
[noexcept] QSignalBlocker &QSignalBlocker::operator=(QSignalBlocker &&other)
Mover-asigna este bloqueador de señales desde other. other tendrá un destructor no-op, mientras que la responsabilidad de restaurar el estado QObject::signalsBlocked() se transfiere a este objeto.
Las señales del objeto que este bloqueador de señales estaba bloqueando antes de ser movido, si las hubiera, se desbloquean excepto en el caso de que ambas instancias bloqueen las señales del mismo objeto y *this esté desbloqueado mientras que other no lo esté, en el momento del movimiento.
© 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.