调试Qt信号,插槽和连接

时间:2010-09-20 10:45:49

标签: c++ qt qt4 signals-slots

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

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

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

QSignalSpy可以帮到你。

来自docs,

  

QSignalSpy类可以自省信号发射.QSignalSpy可以连接任何物体的任何信号并记录其发射。

文档也有例子......