如何确定要打印的QtMsgType消息类型

时间:2013-08-25 09:20:06

标签: c++ qt qdebug

有没有办法告诉应用程序只打印qDebug或仅qFatal条消息?

1 个答案:

答案 0 :(得分:2)

是的,有。您可以使用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 * * 输出功能的工作方式。