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;