C++ 监控/输出发出的Qt信号
我定义了一些在不同场合发出的信号:C++ 监控/输出发出的Qt信号,c++,qt,qt4,qtestlib,qsignalspy,C++,Qt,Qt4,Qtestlib,Qsignalspy,我定义了一些在不同场合发出的信号: signals: void buttonXClicked(int x); void numButtonsChanged(int num); 现在我想看看这些信号是什么样子,参数是否正确。似乎有几种方法可以监控信号 在此处,rohanpm指的是参数-vs,在此处更近的位置指定: 这似乎是一种优雅而快捷的方式来获取我需要的信息。 但老实说,我无法理解如何以及在哪里运行-vs。它不是qmake的一部分。我还要把它放在哪里?(我对qt很陌生) 是否
signals:
void buttonXClicked(int x);
void numButtonsChanged(int num);
现在我想看看这些信号是什么样子,参数是否正确。似乎有几种方法可以监控信号
在此处,rohanpm指的是参数-vs
,在此处更近的位置指定:
这似乎是一种优雅而快捷的方式来获取我需要的信息。
但老实说,我无法理解如何以及在哪里运行-vs
。它不是qmake
的一部分。我还要把它放在哪里?(我对qt很陌生)
是否有必要更改现有的类?难道没有“外部”的方法吗
有很多关于如何测试插槽的文档,但是与信号有关吗?我是否可以在某个地方使用
printf
或cout
使用所有可用的测试数据运行toUpper测试函数,使用名为零的测试数据运行toInt测试函数(如果指定的测试数据不存在,则关联的测试将失败)
其中testMyWidget是构建的测试二进制文件。下面是-vs
文档:
-vs
输出每个发出的信号
如果您grep帮助输出,还有一些文档:
/myTestDirectory$ testMyWidget --help | grep "\-vs"
-vs outputs every signal that gets emitted
如果您在编写基于QTestLib
的单元测试时遇到问题,这是使用Qt 4的一个很好的起点:
我是在阅读更多有关主运行中心及其功能的信息时想到这一点的。(至少在使用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);
}
//信号0
void buttonest::buttonXClicked(int\u t1)
{
void*_a[]={0,常量转换(重新解释转换(&_t1))};
QMetaObject::activate(this,&staticMetaObject,0,_a);
}
我简直不敢相信这是如此简单,但我刚刚添加了一个
std::cout <<"buttonXClicked: "<<_t1;
std::难道我已经试过了吗。我创建了一个qtest.pro,然后运行qmake和make。要执行它,我需要使用/qtest
,但如果我使用我们的无参数运行它,则不会有任何更改。您一定是做错了,或者您根本没有发出信号,这可能是由于多种原因造成的,例如,坏的测试代码等。如果没有进一步的详细信息,很难说,你的问题是,根据我的理解,这个选项应该放在哪里,这篇文章回答了这个问题。;-)所有其他的问题都会让你的问题变得过于宽泛。我想我做错了:D-你是否有一个小程序放在某个地方,它肯定能工作并输出一些有意义的东西?@Qohelet:只需运行qt测试。
std::cout <<"buttonXClicked: "<<_t1;