❝我们使用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} | 打印的消息 |
注意:
- qSetMessagePattern从Qt 5.0引入。
- 只能打印Qt的调试输出如:qDebug,qInfo,qWarning,qCritical,qFatal。而printf,cout将会原样输出。