Qt GUI app:QObject :: connect()失败时会发出警告吗?

Gyö*_*sek 10 c++ qt signals-slots

我最近将我的Qt项目从Linux迁移到Vista,现在我盲目地调试信号.

在Linux上,如果QObject :: connect()在调试版本中失败,我会在stderr上收到警告消息.在Windows上,GUI应用程序没有控制台输出,只有OutputDebugString调用.

我已经安装了DebugView,它很好地捕获了我自己的qDebug()输出,但仍然没有警告失败的信号.

一种可能的解决方案是使用QtCreator的自动完成信号,但我喜欢Eclipse,并且使用两者都是PITA.有关如何在运行时获取信号/插槽信息的任何想法?

编辑:我刚刚实现connect()返回bool,它解决了直接的问题,可能是丑陋的.但是,这并不能解决QMetaObject :: connectSlotsByName()失败的情况,而且这个小部件会自动运行.

Sam*_*ton 10

调用静态函数QErrorMessage :: qtHandler().

根据文档,这'使用qInstallMsgHandler()安装消息处理程序并创建一个显示qDebug(),qWarning()和qFatal()消息的QErrorMessage.

或者,使用qInstallMsgHandler()安装消息处理程序.

另一个替代方案(在qt-interest帖子中描述)是这样的:

#ifdef _DEBUG
#define connect( connectStmt ) Q_ASSERT( connect( connectStmt ) ) 
#endif
Run Code Online (Sandbox Code Playgroud)

...以及它的价值,这里有一些我编译的信号和插槽调试建议:http://samdutton.wordpress.com/2008/10/03/debugging-signals-and-slots-in-qt/