このページでは

SignalSpy QML Type

シグナル発信のイントロスペクションを有効にする。詳細...

Import Statement: import QtTest
Inherits:

Item

プロパティ

方法

詳細説明

次の例では、ユーザー定義の Button タイプの "clicked" シグナルを監視するために SignalSpy を設置しています。シグナルが発信されると、スパイのcount プロパティが増加します。

Button {
    id: button
    SignalSpy {
        id: spy
        target: button
        signalName: "clicked"
    }
    TestCase {
        name: "ButtonClick"
        function test_click() {
            compare(spy.count, 0)
            button.clicked();
            compare(spy.count, 1)
        }
    }
}

上記のスタイルのテストは、同期的に発信されるシグナルに適しています。非同期シグナルの場合は、wait() メソッドを使用して、シグナルが発生するまで(またはタイムアウトが終了するまで)テストをブロックできます。

TestCase およびQt Quick Testも参照

プロパティのドキュメント

count : int [read-only]

このプロパティは、clear ()を最後に呼び出してから、target からsignalName が発行された回数を定義する。

targetsignalNameclear)も参照のこと

signalArguments : list [read-only]

このプロパティは、放出されたシグナルの引数のリストを保持する。シグナルが発信されるたびに、シグナルの引数を含むリストが1つ追加されます。新しいtarget またはsignalName に接続するとき、またはclear() メソッドを呼び出すとき、signalArguments は空にリセットされます。

signalName およびclear()も参照のこと

signalName : string

このプロパティは、リッスンするtarget のシグナル名を定義する。

target およびcountも参照のこと

target : object

このプロパティは、signalName 信号の放出をリッスンするために使用されるターゲットオブジェクトを定義する。

signalName およびcountも参照のこと

valid : bool [read-only]

このプロパティは、現在のシグナル接続状態を定義する。targetsignalName が正常に接続されると真になり、そうでなければ偽になる。

counttargetsignalNameclear)も参照

メソッド・ドキュメント

clear()

count0 に、signalArguments を空にクリアする。valid には影響しません。

count およびwait()も参照してください

wait(timeout = 5000)

target 上のシグナルsignalName が発せられるのを、最大timeout ミリ秒待つ。シグナルが発せられない場合、テストケースは失敗します。

SignalSpy {
    id: spy
    target: button
    signalName: "clicked"
}

function test_async_click() {
    ...
    // do something that will cause clicked() to be emitted
    ...
    spy.wait()
    compare(spy.count, 1)
}

wait()が呼ばれたときにすでにシグナルが発信されている場合と、まだシグナルが発信されていない場合です。wait()関数は、シグナルが既に発生した場合は即座に返すことで、最初のシナリオを処理します。

clear() メソッドを使用すると、既に発生したシグナルに関する情報を破棄して、wait() と将来のシグナルの発生を同期させることができる。

clear() およびTestCase::tryCompare()も参照の こと。

© 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.