调试Qt信号,插槽和连接

Ivo*_*Ivo 14 c++ qt qt4 signals-slots

有没有办法看到哪些信号被触发,以及是否有连接到它们的插槽?理想情况下,我们希望看到所有信号,而不仅仅是特定类或方法的信号; 例如,QSignalSpy只允许我们跟踪特定实例的特定信号.

在我们的应用程序中,由于信号从不同组件发出两次,我们已经看到了性能问题.最后,事实证明,有一个类的第二个实例应该只有一次.知道发出哪些信号确实有助于调试.

信号通过QMetaObject::invoke*,我希望找到一些东西可以挂钩,但我没有发现任何明显的东西.

Jam*_*ner 5

(免责声明,我为KDAB工作):KDAB的GammaRay工具可以在运行时向您显示对象和连接,而无需任何源更改.它检查元对象表并执行一些代码注入挂钩以使其工作.


lia*_*iaK 1

QSignalSpy可以帮助你。

从文档中,

QSignalSpy 类可以对信号发射进行内省。QSignalSpy 可以连接到任何对象的任何信号并记录其发射。

该文档也有示例..