【发布时间】:2013-08-25 09:20:06
【问题描述】:
有没有办法告诉应用程序只打印qDebug 或只打印qFatal 消息?
【问题讨论】:
有没有办法告诉应用程序只打印qDebug 或只打印qFatal 消息?
【问题讨论】:
是的,有。您可以使用qInstallMessageHandler 安装您自己的消息处理程序。
这看起来像这样(来自 Qt 文档):
void myMessageOutput(QtMsgType type, const QMessageLogContext &context,
const QString &msg)
{
QByteArray localMsg = msg.toLocal8Bit();
switch (type) {
case QtDebugMsg:
fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(),
context.file, context.line, context.function);
break;
case QtWarningMsg:
fprintf(stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(),
context.file, context.line, context.function);
break;
case QtCriticalMsg:
fprintf(stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(),
context.file, context.line, context.function);
break;
case QtFatalMsg:
fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(),
context.file, context.line, context.function);
abort();
}
}
int main(int argc, char **argv)
{
qInstallMessageHandler(myMessageOutput);
QApplication app(argc, argv);
...
return app.exec();
}
让您 100% 控制 qDebug 和其他 q** 输出函数的工作方式。
【讨论】: