【发布时间】:2018-03-16 11:43:13
【问题描述】:
我有一个具有数十个信号槽连接的应用程序,特别是多个类(具有分解)正在实现几乎相同的QObject::connect 信号槽,我面临的问题有时是,在 QtCreator 应用程序输出 em>,我得到了通常的错误:
QObject::connect: 无法连接 (null)::SessionClosed() 到 mainWindow_Desktop::stop_Scanning()
但它没有任何迹象表明错误来自哪个文件/行或代码段,其代价是我必须检查所有类似的连接以检测哪个出错了! 我的问题是:我有什么方法可以直接知道错误所指的文件/行?
【问题讨论】:
-
对每个未标记为
Qt::UniqueConnection的连接使用断言。assert(connect(...)) -
你可以安装一个event filter on qWarning 并调用一个断言/抛出异常或任何你喜欢的,来处理所有类似的情况。
-
@DmitrySazonov,问题更糟,我可能描述得不够充分,错误来自从未实例化的类..由于它们的多态结构,它们在运行时没有对象
-
@Jaa-c
assert在发布模式下构建后将变为无操作(请参阅NDEBUG宏)。在这种情况下调试愉快:) -
@Ruslan:用于测试目的的内部发布版本通常有断言......而对于生产代码,你将它们关闭......
标签: qt qt-creator signals-slots qobject