QSignalBlocker Class

QObject::blockSignals() の例外安全ラッパー。詳細...

Header: #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)

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 がブロック解除されていない場合は除きます。

本書に含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。