IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

QSignalBlocker Class

Exception-safe wrapper around QObject::blockSignals().

This class was introduced in Qt 5.3.

All functions in this class are reentrant.

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

QSignalBlocker Class

  • Header: QSignalBlocker

  • Since: Qt 5.3

  • CMake:

    find_package(Qt6 REQUIRED COMPONENTS Core)

    target_link_libraries(mytarget PRIVATE Qt6::Core)

  • qmake: QT += core

  • Group: QSignalBlocker is part of objectmodel

Detailed Description

QSignalBlocker can be used wherever you would otherwise use a pair of calls to blockSignals(). It blocks signals in its constructor and in the destructor it resets the state to what it was before the constructor ran.

 
Sélectionnez
{
const QSignalBlocker blocker(someQObject);
// no signals here
}

is thus equivalent to

 
Sélectionnez
const bool wasBlocked = someQObject->blockSignals(true);
// no signals here
someQObject->blockSignals(wasBlocked);

except the code using QSignalBlocker is safe in the face of exceptions.

See Also

Member Function Documentation

 

[explicit] QSignalBlocker::QSignalBlocker(QObject *object)

Constructor. Calls object->blockSignals(true).

[explicit] QSignalBlocker::QSignalBlocker(QObject &object)

This is an overloaded function.

Calls object.blockSignals(true).

QSignalBlocker::QSignalBlocker(QSignalBlocker &&other)

Move-constructs a signal blocker from other. other will have a no-op destructor, while responsibility for restoring the QObject::signalsBlocked() state is transferred to the new object.

QSignalBlocker::~QSignalBlocker()

Destructor. Restores the QObject::signalsBlocked() state to what it was before the constructor ran, unless unblock() has been called without a following reblock(), in which case it does nothing.

void QSignalBlocker::reblock()

Re-blocks signals after a previous unblock().

The numbers of reblock() and unblock() calls are not counted, so every reblock() undoes any number of unblock() calls.

void QSignalBlocker::unblock()

Temporarily restores the QObject::signalsBlocked() state to what it was before this QSignalBlocker's constructor ran. To undo, use reblock().

The numbers of reblock() and unblock() calls are not counted, so every unblock() undoes any number of reblock() calls.

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.

The object's signals this signal blocker was blocking prior to being moved to, if any, are unblocked except in the case where both instances block the same object's signals and *this is unblocked while other is not, at the time of the move.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+