Spec-Zone.ru › Qt 6.0

Класс QSignalBlocker

Безопасная по отношению к исключениям оболочка вокруг QObject::blockSignals(). Подробнее...

Заголовок: #include <QSignalBlocker>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
С момента: Qt 5.3
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются реентерабельными.

Открытые функции

QSignalBlocker(QSignalBlocker &&other)
QSignalBlocker(QObject &object)
QSignalBlocker(QObject *object)
QSignalBlocker & operator=(QSignalBlocker &&other)
~QSignalBlocker()
void reblock()
void unblock()

Подробное описание

QSignalBlocker можно использовать всякий раз, когда вам нужно выполнить пару вызовов blockSignals(). Он блокирует сигналы в конструкторе и в деструкторе восстанавливает состояние до того, как был вызван конструктор.

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

эквивалентно

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

за исключением того, что код, использующий QSignalBlocker, безопасен при возникновении исключений.

См. также QMutexLocker и QEventLoopLocker.

Документация по членам-функциям

QSignalBlocker::QSignalBlocker(QSignalBlocker &&other)

Создаёт копию блока сигнала из other при помощи перемещения. У other будет деструктор с бездействием, в то время как ответственность за восстановление состояния QObject::signalsBlocked() передаётся новому объекту.

QSignalBlocker::QSignalBlocker(QObject &object)

Это перегруженная функция.

Вызывает object.blockSignals(true).

QSignalBlocker::QSignalBlocker(QObject *object)

Конструктор. Вызывает object->blockSignals(true).

QSignalBlocker &QSignalBlocker::operator=(QSignalBlocker &&other)

Присваивает текущему блоку сигнала содержимое other при помощи перемещения. У other будет деструктор с бездействием, в то время как ответственность за восстановление состояния QObject::signalsBlocked() передаётся текущему объекту.

Сигналы объекта, которые блокировались этим блоком сигнала до перемещения, если таковые имеются, разблокируются, за исключением случая, когда оба экземпляра блокируют сигналы одного и того же объекта и *this разблокирован, в то время как other нет, на момент перемещения.

QSignalBlocker::~QSignalBlocker()

Деструктор. Восстанавливает состояние QObject::signalsBlocked() до того, как был вызван конструктор, за исключением случаев, когда unblock() был вызван без последующего вызова reblock(), в этом случае ничего не происходит.

void QSignalBlocker::reblock()

Блокирует сигналы после предыдущего вызова unblock().

Количество вызовов reblock() и unblock() не учитывается, поэтому каждый вызов reblock() отменяет любое количество вызовов unblock().

void QSignalBlocker::unblock()

Временно восстанавливает состояние QObject::signalsBlocked() до состояния, которое существовало до запуска конструктора этого QSignalBlocker. Для отмены используйте reblock().

Количество вызовов reblock() и unblock() не учитывается, поэтому каждый вызов unblock() отменяет любое количество вызовов reblock().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qsignalblocker.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API