监视器/输出发出的qt信号
Monitor/Output emitted Qt-Signals
我定义了一些在不同场合发出的信号:
signals:
void buttonXClicked(int x);
void numButtonsChanged(int num);
现在我只想看看这些信号是什么样的,如果参数是正确的。似乎有几种方法可以监测信号。
在这里的帖子中,rohanpm指的是参数-vs
,在这里指定:http://qt - project.org/doc/qt 4.8 -/- qtestlib manual.html # qtestlib-command-line-arguments
这似乎是获得我需要的信息的一种优雅而快速的方法。但说实话,我无法理解如何以及在哪里我必须运行-vs
。它不是qmake
的一部分。我还能把它放在哪里?(我对qt很陌生)。
与QSignalSpy相关,似乎有必要改变现有的类?难道就没有"外部"方法吗?
有很多关于如何测试插槽的文档-但与信号有关?我可以在什么地方使用printf
或cout
吗?
我在阅读更多关于moc及其功能的信息时得到了这个想法。(至少在使用NetBeans时)我得到了文件ButtonTest.cpp的附加文件moc_ButtonTest.cpp。里面是一个叫做:
的方法// SIGNAL 0
void ButtonTest::buttonXClicked(int _t1)
{
void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
QMetaObject::activate(this, &staticMetaObject, 0, _a);
}
我简直不敢相信这么简单,但我只是添加了一个
std::cout <<"buttonXClicked: "<<_t1;
,它似乎做的正是我想要的
如链接文档所写:
使用所有可用的测试数据运行toUpper测试函数,并使用testdata为0的toInt测试函数(如果指定的测试数据不存在,则相关的测试将失败)。
/myTestDirectory$ testMyWidget -vs -eventdelay 500
,其中testMyWidget是构建的测试二进制文件。以下是-vs
文档:
和输出每个发出的信号
如果您执行grep帮助输出,还会有更多的文档:
/myTestDirectory$ testMyWidget --help | grep "-vs"
-vs outputs every signal that gets emitted
如果你在编写基于QTestLib
的单元测试时有困难,这是Qt 4的一个很好的起点:
QTestLib手册
相关文章:
- Qt 信号/插槽问题
- Qt信号和插槽如果从QRunnable或其他线程调用,则不起作用
- C++Qt信号和插槽
- 使用std::move将std::unique_ptr作为qt信号参数传递
- 使用std::bind将Qt信号连接到插槽
- 如果代码中没有连接任何插槽,是否有理由发出Qt信号?
- 文档在哪里说明如果参数不是从末端删除参数,则无法从QT信号插槽连接中删除参数?
- 按钮组上的 Qt 信号未连接
- 通过排队的QT信号插槽连接发送QSHAREDPOINTERS的QVECTOR
- QT信号和插槽无法提供错误消息
- 如何监控Qt信号事件队列深度
- QT信号在虚拟机中不连接
- 为什么事件队列未处理我的QT信号
- 如何在打印机完成打印时从打印机获取Qt信号?
- 这是在Qt信号和插槽中使用参数调用函数的好方法吗?
- 删除 QObject 后 Qt 信号仍在触发
- Qt c++信号槽 - 清除信号所必需的
- 一个类中的QT信号/插槽,但从不同的线程发出
- QT:C 信号到QML连接
- 来自静态方法的QT信号