【问题标题】:How to decide which QtMsgType message type to print如何决定要打印哪种 QtMsgType 消息类型
【发布时间】:2013-08-25 09:20:06
【问题描述】:

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

【问题讨论】:

    标签: c++ qt qdebug


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-02-04
      • 1970-01-01
      • 2018-09-09
      • 2017-04-28
      • 2018-03-08
      • 2018-08-08
      • 1970-01-01
      • 2023-03-26
      • 2010-10-21
      相关资源
      最近更新 更多