雖然不是一個完整的答案,但您可以安裝DebugView(如果您使用的是XP機器)以查看qDebug輸出,而您試圖弄清楚這一點。
另一種解決方案可能被認爲是一個黑客,但相當不錯的作品,是簡單地自己劫持調試消息:
#include <QtCore/QCoreApplication>
#include <QDebug>
#include <iostream>
void msgHandler(QtMsgType type, const char* msg)
{
const char symbols[] = { 'I', 'E', '!', 'X' };
QString output = QString("[%1] %2").arg(symbols[type]).arg(msg);
std::cerr << output.toStdString() << std::endl;
if(type == QtFatalMsg) abort();
}
int main(int argc, char *argv[])
{
qInstallMsgHandler(msgHandler);
QCoreApplication a(argc, argv);
qDebug() << "Hello world.";
qWarning() << "Uh, oh...";
qCritical() << "Oh, noes!";
qFatal("AAAAAAAAAH!");
return a.exec();
}
這將輸出:
[I] Hello world.
[E] Uh, oh...
[!] Oh, noes!
[X] AAAAAAAAAH!
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
這實際上是一些修改我使用自己的代碼將qDebug,qWarning等發送到日誌文件。
您創建了什麼樣的應用程序? GUI還是控制檯? – liaK 2010-07-24 04:42:16
這是一個GUI應用程序。 – 2010-07-25 06:16:18
通過任何方式你定義QT_NO_DEBUG_OUTPUT? – liaK 2010-07-28 07:10:13