加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Qt GUI应用程序:如果QObject :: connect()失败?

发布时间:2020-12-16 05:22:35 所属栏目:百科 来源:网络整理
导读:我最近将我的Qt项目从 Linux迁移到Vista,现在我正在盲目调试信号. 在Linux上,如果QObject :: connect()在调试版本中失败,我会在stderr上收到一条警告消息.在Windows上,没有用于GUI应用程序的控制台输出,只有一个OutputDebugString调用. 我已经安装了DebugVie
我最近将我的Qt项目从 Linux迁移到Vista,现在我正在盲目调试信号.

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

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

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

编辑:我只是意识到connect()返回bool,它解决了直接的问题,可能是丑陋的.但是,这并不能解决QMetaObject::connectSlotsByName()失败的情况,而是使用小部件自动运行.

解决方法

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

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

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

另一个选择(在qt兴趣帖子中描述)是这样的:

#ifdef _DEBUG
#define connect( connectStmt ) Q_ASSERT( connect( connectStmt ) ) 
#endif

…为什么值得,这里有一些信号和插槽调试建议我编译:http://samdutton.wordpress.com/2008/10/03/debugging-signals-and-slots-in-qt/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读