SignalSpy QML Type
启用信号发出的内省功能。更多...
| Import Statement: | import QtTest |
| Inherits: |
属性
- count : int
- signalArguments : list
- signalName : string
- target : object
- valid : bool
方法
详细说明
在下面的示例中,安装了一个 SignalSpy 来监听用户自定义的 Button 类型的“clicked”信号。当该信号被触发时,监听器上的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 的次数。
另请参阅 target 、signalName 以及clear()。
signalArguments : list [read-only]
该属性保存一个已触发信号的参数列表。每次触发该信号时,都会向列表中追加一个条目,其中包含该信号的参数。当连接到新的target 或新的signalName ,或者调用clear()方法时,signalArguments将被重置为空。
另请参阅 signalName 和clear()。
signalName : string
此属性定义了在target 上要监听的信号名称。
target : object
该属性定义了将用于监听signalName 信号发出的目标对象。
另请参阅 signalName 和count 。
valid : bool [read-only]
该属性定义了当前信号连接状态。当“target ”的signalName 连接成功时,该属性为true;否则为false。
另请参阅 count 、target 、signalName 以及clear()。
方法文档
clear()
将count 清空为0 ,并将signalArguments 清空。不影响valid 。
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.