2

QT 的新手,我已经导入了一个别人制作的项目,它在 QT Creator 的 MinGW 版本上编译和运行。但是它有一个小问题,如果我能看到调试输出,那将更容易诊断。

到处都有像“qInfo()<<“调试消息”;”这样的行,但是当我在调试模式下运行项目时,我在应用程序输出窗口中看不到它们的任何输出,这是我理解的时候它应该是。运行程序后我只能看到:

调试开始 调试完成

我试过的:

  • 确保使用的工具包是安装附带的 QT 调试器和 mingw

  • 在 main.cpp 的顶部放置一个 ifdef,并带有“#undef QT_NO_INFO_OUTPUT”

  • 在所有头文件中添加了包含 QtDebug

依然没有。

我究竟做错了什么?

请记住,我是 Qt 的新手,也许我所说的其中一件事我已经尝试过我没有正确实施:S

谢谢!

4

1 回答 1

3

qInfo() qDebug() 等都回退到一个可以被覆盖的函数。确保这不是在项目内的任何地方完成的(全局搜索“qInstallMessageHandler”)。如果未实现,请自行定义如下:

void debugmessagehandler(QtMsgType Type, 
    const QMessageLogContext& Context, 
    const QString &Message) 
{
#ifdef WIN32
    OutputDebugString(reinterpret_cast<const wchar_t *>(m.utf16()));
#endif
}

并像这样在您的 QApplication-object-constructor (或不久之后)中注册它

this->qInstallMessageHandler(debugmessagehandler);

现在你需要做的就是确保你的调试器实际上是附加的。你可以打电话

isDebuggerPresent(void);

从你的代码里面的winbase.h来检查,或者使用外部程序来验证。

于 2016-10-13T20:11:20.320 回答