监控/输出发出的 Qt 信号
-
21-12-2019 - |
题
我定义了一些在不同场合发出的信号:
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 测试函数,并使用称为零的测试数据运行 toInt 测试函数(如果指定的测试数据不存在,则关联的测试将失败)。
/myTestDirectory$ testMyWidget -vs -eventdelay 500
其中 testMyWidget 是构建的测试二进制文件。这是 -vs
文档:
-vs输出每个发出的信号
如果您 grep 帮助输出,还会有更多文档:
/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted
如果你碰巧在写作上遇到困难 QTestLib
基于单元测试,这对于您使用 Qt 4 来说是一个很好的起点:
不隶属于 StackOverflow