如何在QT中跟踪发射的信号?

9

有没有一种方法可以观察所有被发出的信号?

PS. 当然我们可以为所有信号编写槽,但这不是我想要的。

1个回答

7
什么是观察?您需要在控制台上实时反馈,还是在程序退出时记录到文件就足够了?
如果您需要在控制台上实时反馈,可以检查 QTest 的实现。有一个 -vs 命令行开关(Qt 文档),它可以在控制台上启用所有信号的打印输出(如果您只需要测试中的信号信息而不是实际应用程序中的信号信息,则可以使用 -vs 开关运行 QTest 测试)。
另一种方法是使用 QSignalSpy 类。然而,这并不理想,因为您需要每个信号一个 spy,并且您必须定期打印观察到的信号(QSignalSpy 中没有通知)。
编辑: 链接已存档,但仍可访问。

Qt文档:http://web.archive.org/web/20120624024828/http://qt-project.org/doc/qt-4.8/qtestlib-manual.html

QsignalSpy:http://web.archive.org/web/20141224031214/http://qt-project.org/doc/qt-4.8/qsignalspy.html

这些文档的更新版本分别适用于官方网站上更新的QT版本。


两个都适合我,即时反馈控制台并在程序退出时记录到文件。 - metdos
1
你指的"-vs开关"是什么意思? - metdos
1
@metdos:我猜他假设有一个选项可以放入命令行。 - ereOn
是的,我指的是命令行参数。我还在我的答案中添加了文档链接。 - chalup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接