SignalSpy QML Type
可反省信号发射。更多
Import Statement: | import QtTest |
Inherits: |
属性
- count : int
- signalArguments : list
- signalName : string
- target : object
- valid : bool
方法
详细说明
在下面的示例中,安装了一个 SignalSpy,用于监视用户定义的 Button 类型上的 "clicked "信号。当信号发出时,Spy 的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 |
该属性定义了自上次调用clear() 以来target 发送signalName 的次数。
另请参阅 target,signalName, 和clear() 。
signalArguments : list |
该属性保存已发射信号参数的列表。信号的每次发射都会在列表中追加一项,其中包含信号的参数。当连接到新的target 或新的signalName 或调用clear() 方法时,signalArguments 将重置为空。
另请参阅 signalName 和clear() 。
target : object |
该属性定义用于监听signalName 信号发射的目标对象。
另请参阅 signalName 和count 。
valid : bool |
该属性定义当前信号连接状态。当signalName 成功连接target 时,该属性为 true,否则为 false。
另请参阅 count,target,signalName 和clear() 。
方法文档
clear() |
将count 清除为 0,将valid 重置为 false,将signalArguments 清除为空。
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()。
© 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.