QSignalBlocker Class
QObject::blockSignals() の例外安全ラッパー。さらに...
ヘッダ | #include <QSignalBlocker> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
注意:このクラスの関数はすべてリエントラントです。
パブリック関数
QSignalBlocker(QObject *object) | |
QSignalBlocker(QObject &object) | |
QSignalBlocker(QSignalBlocker &&other) | |
~QSignalBlocker() | |
(since 6.7) void | dismiss() |
void | reblock() |
void | unblock() |
QSignalBlocker & | operator=(QSignalBlocker &&other) |
詳細説明
QSignalBlockerは、blockSignals()を2回呼び出す必要がある場合に使用できます。コンストラクタでシグナルをブロックし、デストラクタでコンストラクタが実行される前の状態にリセットします。
{ const QSignalBlocker blocker(someQObject); // no signals here }
したがって
const bool wasBlocked = someQObject->blockSignals(true); // no signals here someQObject->blockSignals(wasBlocked);
ただし、QSignalBlockerを使ったコードは例外に直面しても安全です。
QMutexLocker およびQEventLoopLockerも参照してください 。
メンバ関数ドキュメント
[explicit noexcept]
QSignalBlocker::QSignalBlocker(QObject *object)
コンストラクタ。object->blockSignals(true) を呼び出す。
[explicit noexcept]
QSignalBlocker::QSignalBlocker(QObject &object)
これはオーバーロードされた関数です。
object.blockSignals(true)を呼び出します。
[noexcept]
QSignalBlocker::QSignalBlocker(QSignalBlocker &&other)
Move-constructは、other からシグナルブロッカーを構築する。other はno-opのデストラクタを持ち、QObject::signalsBlocked ()の状態を復元する責任は新しいオブジェクトに移る。
[noexcept]
QSignalBlocker::~QSignalBlocker()
デストラクタ。unblock() が次のreblock() を伴わずに呼び出された場合を除き、QObject::signalsBlocked() の状態をコンストラクタが実行される前の状態に戻す。
[noexcept, since 6.7]
void QSignalBlocker::dismiss()
QSignalBlockerコンストラクタに渡されたQObject にアクセスしなくなる。unblock()、reblock()、および ~QSignalBlocker() は影響を与えません。
この関数は Qt 6.7 で導入されました。
[noexcept]
void QSignalBlocker::reblock()
前のunblock() の後にシグナルを再ブロックする。
reblock()およびunblock()呼び出しの回数はカウントされないため、reblock()ごとに、unblock()呼び出しの任意の回数が取り消される。
[noexcept]
void QSignalBlocker::unblock()
QObject::signalsBlocked() の状態を、このQSignalBlocker のコンストラクタが実行される前の状態に一時的に戻す。元に戻すには、reblock() を使用する。
reblock() および unblock() 呼び出しの回数はカウントされないので、unblock() を実行するたびに、reblock() 呼び出しの回数に関係なく元に戻る。
[noexcept]
QSignalBlocker &QSignalBlocker::operator=(QSignalBlocker &&other)
other other はノーオペのデストラクタを持ち、 () の状態を復元する責任はこのオブジェクトに移される。QObject::signalsBlocked
移動される前にこのシグナルブロッカがブロックしていたオブジェクトのシグナルがある場合は、両方のインスタンスが同じオブジェクトのシグナルをブロックし、*this
がブロック解除され、other がブロック解除されていない場合を除き、移動時にブロック解除される。
© 2025 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.