监视器/输出发出的qt信号

Monitor/Output emitted Qt-Signals

本文关键字:qt 信号 出发 输出 监视器      更新时间:2023-10-16

我定义了一些在不同场合发出的信号:

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相关,似乎有必要改变现有的类?难道就没有"外部"方法吗?

有很多关于如何测试插槽的文档-但与信号有关?我可以在什么地方使用printfcout吗?

我在阅读更多关于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手册