作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员
在Qt项目开发过程中,往往需要对程序的一些信息进行控制,比如:打印日志、调试信息等,便于我们后期查找、跟踪及定位问题。
下面,我们来分享下常用的几种方式。
我们简单地写一些测试代码,用qDebug输出一些基本信息。
#include <QApplication> #include <QWidget> #include <qDebug> int main(int argc, char *argv[]) QApplication app(argc, argv); qDebug() << QString::fromLocal8Bit("一去丶二三里"); qDebug() << QString::fromLocal8Bit("青春不老,奋斗不止!"); qDebug() << QString::fromLocal8Bit("纯正开源之美,有趣、好玩、靠谱。。。"); QWidget w; w.show(); return app.exec(); 应用程序输出 大部分情况下,我们建立的是【Qt Widgets Application】(用于GUI开发)项目,其输出信息在【应用程序输出】窗口。 这对于开发人员来说调试比较方便,但是,当你把整个程序打包出去的时候(比如:给测试人员或者其他人员),他们根本无法获取这些信息(不方便),所以我们可以采用下面两种方式。 控制台输出 对于【Qt Widgets Application】来说,我们也可以像【Qt Console Application】(新建项目时可以选择)一样,进行控制台输出,只不过需要自行控制: 在.pro文件中添加: CONFIG += console 选择:项目 -> 运行,勾选【Run in terminal】(在终端运行)选项。 这时,我们的输出信息就可以显示在控制台上了。 重定向至文件 主要采用自定义消息处理机制,重定向输出信息至文件。 其中输出格式可以自定义,比如:输出信息、文件、函数、行号、日期时间。这样就很利于我们追踪了。 详细内容请参考:Qt之qInstallMessageHandler(重定向至文件) 在.pro 文件中添加 Config += console,qt 中将显示控制台窗口,并会将qDebug()中的信息输入到控制台中 等价于 在 项目配置中 ,qmake 额外参数项中加入 "CONFIG+=console",或者如下 qt .pro 工程文件中输出日志 使用message 函数message("ArcGIS Runtime... 在这个示例中,我们创建了一个自定义的QEvent事件对象,并在发送消息按钮的点击事件处理函数中,使用QWidget::postEvent()函数将该事件发送到目标窗口。在MainWindow类的event()函数中,我们重载了QWidget类的event()函数,拦截并处理自定义事件。当收到自定义事件时,输出消息内容,并返回true表示已经处理该事件。在QT中,可以使用QWidget类的方法来给窗口发送消息。构造一个自定义的QEvent事件对象(或者使用已有的QEvent子类)。
大部分情况下,我们建立的是【Qt Widgets Application】(用于GUI开发)项目,其输出信息在【应用程序输出】窗口。
这对于开发人员来说调试比较方便,但是,当你把整个程序打包出去的时候(比如:给测试人员或者其他人员),他们根本无法获取这些信息(不方便),所以我们可以采用下面两种方式。
对于【Qt Widgets Application】来说,我们也可以像【Qt Console Application】(新建项目时可以选择)一样,进行控制台输出,只不过需要自行控制:
CONFIG += console 选择:项目 -> 运行,勾选【Run in terminal】(在终端运行)选项。 这时,我们的输出信息就可以显示在控制台上了。 重定向至文件 主要采用自定义消息处理机制,重定向输出信息至文件。 其中输出格式可以自定义,比如:输出信息、文件、函数、行号、日期时间。这样就很利于我们追踪了。 详细内容请参考:Qt之qInstallMessageHandler(重定向至文件) 在.pro 文件中添加 Config += console,qt 中将显示控制台窗口,并会将qDebug()中的信息输入到控制台中 等价于 在 项目配置中 ,qmake 额外参数项中加入 "CONFIG+=console",或者如下 qt .pro 工程文件中输出日志 使用message 函数message("ArcGIS Runtime... 在这个示例中,我们创建了一个自定义的QEvent事件对象,并在发送消息按钮的点击事件处理函数中,使用QWidget::postEvent()函数将该事件发送到目标窗口。在MainWindow类的event()函数中,我们重载了QWidget类的event()函数,拦截并处理自定义事件。当收到自定义事件时,输出消息内容,并返回true表示已经处理该事件。在QT中,可以使用QWidget类的方法来给窗口发送消息。构造一个自定义的QEvent事件对象(或者使用已有的QEvent子类)。
CONFIG += console 选择:项目 -> 运行,勾选【Run in terminal】(在终端运行)选项。 这时,我们的输出信息就可以显示在控制台上了。
这时,我们的输出信息就可以显示在控制台上了。
重定向至文件 主要采用自定义消息处理机制,重定向输出信息至文件。 其中输出格式可以自定义,比如:输出信息、文件、函数、行号、日期时间。这样就很利于我们追踪了。 详细内容请参考:Qt之qInstallMessageHandler(重定向至文件) 在.pro 文件中添加 Config += console,qt 中将显示控制台窗口,并会将qDebug()中的信息输入到控制台中 等价于 在 项目配置中 ,qmake 额外参数项中加入 "CONFIG+=console",或者如下 qt .pro 工程文件中输出日志 使用message 函数message("ArcGIS Runtime... 在这个示例中,我们创建了一个自定义的QEvent事件对象,并在发送消息按钮的点击事件处理函数中,使用QWidget::postEvent()函数将该事件发送到目标窗口。在MainWindow类的event()函数中,我们重载了QWidget类的event()函数,拦截并处理自定义事件。当收到自定义事件时,输出消息内容,并返回true表示已经处理该事件。在QT中,可以使用QWidget类的方法来给窗口发送消息。构造一个自定义的QEvent事件对象(或者使用已有的QEvent子类)。
主要采用自定义消息处理机制,重定向输出信息至文件。
其中输出格式可以自定义,比如:输出信息、文件、函数、行号、日期时间。这样就很利于我们追踪了。
详细内容请参考:Qt之qInstallMessageHandler(重定向至文件)