首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Qt信号记录器

QSignalSpy可以记录对象的信号发射的次数,参数等信息。

  QSignalSpy可以连接到任何对象的任何信号并记录其发射信息。QSignalSpy本身是一个QVariant列表的列表QList。信号的每次发射都将向列表中追加一个项,其中包含信号的参数列表。

常用接口

将需要记录对象和其信号传入到构造函数中。

QSignalSpy(const QObject *object, PointerToMemberFunction signal)

QSignalSpy(const QObject *object, const char *signal)

返回信号触发的次数。

inline int count() const

返回当前记录的信号名字。

QByteArray QSignalSpy::signal() const

获取第n次触发的信号信息。

QSignalSpy::at(n)

获取第n次触发的信号参数列表信息。

QVariantList arguments = spy.at(n);

arguments.at(0).type();

arguments.at(1).type();

...

arguments.at(n).type();

默认等待5秒超时时间,如果在超时范围内触发信号则返回true,否则返回false。

bool QSignalSpy::wait(int timeout = 5000)

应用场景

  该类位于testlib测试模块中,意味着它大多数用于测试场景。比如我们为了验证某个对象的信号触发的次数是否符合预期,就可以使用QSignalSpy的count来验证是否成立。

小例子

#include 

#include 

#include 

#include 

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QPushButton *btn = new QPushButton;

QSignalSpy spy(btn, &QPushButton::clicked);

emit btn->click();

emit btn->click();

emit btn->click();

QVariantList arguments = spy.first();

qDebug() 

qDebug() 

qDebug() 

return a.exec();

}

打印输出:

name:  "clicked(bool)"

type:  QVariant::bool

count:  3

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200506A0TLV800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券