定制Qt的调试输出

2020-04-15 21:54:38 浏览数 (1)

❝我们使用Qt库用的最多的调试输出是qDebug了,但是它输出单一。如果需要输出日期时间,行号等消息时都需要通过代码去实现似乎太过于繁琐。本文通过简单的配置,用最少的修改就可以定制Qt的输出信息。 ❞

  不多说,先上代码!!!

使用例子

  新建一个名字为TestApp的应用。代码如下:

代码语言:javascript复制
#include <QCoreApplication>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qSetMessagePattern("%{appname} %{type} %{time [yyyy-MM-dd hh:mm:ss]} %{file} %{line} %{function} %{message}");
    qInfo()    << "Hello world";
    qDebug()   << "Hello world";
    qWarning() << "Hello world";

    return a.exec();
}

  输出:

代码语言:javascript复制
TestApp info [2020-04-13 23:01:11] ..TestAppmain.cpp 8 main Hello world
TestApp debug [2020-04-13 23:01:11] ..TestAppmain.cpp 9 main Hello world
TestApp warning [2020-04-13 23:01:11] ..TestAppmain.cpp 10 main Hello world

使用

「通过设置qSetMessagePattern函数去更改默认的消息。」   一般常用的格式字符串有:

格式

含义

%{appname}

程序名字,等价于QCoreApplication::applicationName()

%{type}

输出类型如:"debug","warning","critical"或"fatal"

%{time [format]}

消息的时间格式,等价于:QDateTime::toString()

%{file}

打印所在的文件

%{line}

打印所在文件的行号

%{function}

打印所在的函数

%{message}

打印的消息

注意:

  1. qSetMessagePattern从Qt 5.0引入。
  2. 只能打印Qt的调试输出如:qDebug,qInfo,qWarning,qCritical,qFatal。而printf,cout将会原样输出。
qt

0 人点赞