当前位置: 首页 > news >正文

做一个模板网站多少钱汕头网站建设方案开发

做一个模板网站多少钱,汕头网站建设方案开发,飞飞影视做的网站,企业营销策划 网站建设在Qt中,一般习惯使用qDebug信息进行输出和打印调试信息到console或者文件中,在qDebug中,也有一些小技巧,可以帮助我们更好的使用qDebug打印日志记录,本文分享了qDebug使用的一些小技巧。 1. 打印出文件名、行号、调用函…

在Qt中,一般习惯使用qDebug信息进行输出和打印调试信息到console或者文件中,在qDebug中,也有一些小技巧,可以帮助我们更好的使用qDebug打印日志记录,本文分享了qDebug使用的一些小技巧。


1. 打印出文件名、行号、调用函数等上下文信息

    有些时候是不是可能会遇见这样的事情,自己不知道在哪儿打印了一串debug信息,但是现在不知道在哪儿了,并且由于文件很多,比较难以寻找。本次提到的方法就可以解决这个问题。首先,要明白一件事,打印出行号、文件名一定要在调用qDebug时就知道当前位置,C语言是通过 __FILE__ __LINE__ 这些东西得到的,而qDebug也是一样的方式,它是一个宏实现是这个样子的。

#define qDebug QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug
#define qInfo QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).info
#define qWarning QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).warning
#define qCritical QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).critical
#define qFatal QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).fatal

而其中

#define QT_MESSAGELOG_FILE __FILE__
#define QT_MESSAGELOG_LINE __LINE__
#define QT_MESSAGELOG_FUNC Q_FUNC_INFO

    所以,qDebug 本身应该是支持了打印上下文信息的,但是为什么我们平时打印的信息没有呢?

    这个是因为需要去设置一下message的pattern

    设置pattern有两种方法:

  1. qSetMessagePattern 函数
    通过函数设置格式,例如: qSetMessagePattern("[%{type}]%{file}:%{line}\t%{time}\t%{function}\n%{message}")

  2. QT_MESSAGE_PATTERN 环境变量
    通过设置全局环境变量或者使用qputenv("QT_MESSAGE_PATTERN", "[%{type}]%{file}:%{line}\t%{time}\t%{function}\n%{message}");的手法,来设置pattern

    或者换个思路,qt为我们提供了一个handle,使用 qInstallMessageHandler设置

void msgHandle(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{printf("Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
}qInstallMessageHandler(msgHandle);

2. 将qDebug内容输出到文件中

    将qDebug输出到文件当中则是直接采用 qInstallMessageHandler的思路来做,在这个函数中,将printf改成fprintf即可。

3. 正式运行时屏蔽掉 debug 信息

    在qlogging.h中有一段代码

#if defined(QT_NO_DEBUG_OUTPUT)
#  undef qDebug
#  define qDebug QT_NO_QDEBUG_MACRO
#endif

    意味着其实当定义了上面的qDebug宏后,其实下面还有宏条件重新定义,展开看看 QT_NO_QDEBUG_MACRO则是

#define QT_NO_QDEBUG_MACRO while (false) QMessageLogger().noDebug

    所以,我们在编译时,加入一个宏即可(pro文件直接写法如下:)

DEFINES += QT_NO_DEBUG_OUTPUT
http://www.khdw.cn/news/6968.html

相关文章:

  • 如何网站防止采集网络推广员工资多少钱
  • 网站试运营广告推广媒体
  • 推广型的网站怎么做8大营销工具指的是哪些
  • 做网站是怎么赚钱的比较好的友链平台
  • 宝山青岛网站建设人民政府网站
  • 西宁那有做网站的semaphore
  • 政府网站建设 会议seo外链工具软件
  • 怎么做加密货币网站高端网站公司
  • 做网站时遇到的问题磁力吧最佳搜索引擎
  • 嘉兴企业网站开发seo站内优化
  • workpress做静态网站seo排名培训公司
  • 短视频运营公司网站建设seo团队管理系统
  • 学网站开发需要会什么百度怎么转人工客服
  • 高校网站建设的优势和不足武汉seo网站推广培训
  • 中国纪检监察网官网上海比较大的优化公司
  • 怎么做直播网站合肥网站建设程序
  • 怎么在土巴兔做网站南昌seo营销
  • 更改wordpress主题字体颜色安徽seo人员
  • 专业做企业网站1元购买域名
  • 厦门有什么网站设计公司如何做网页制作
  • 绿色主题网站百度搜索引擎网站
  • 提供网站建设定制软件培训机构有哪些?哪个比较好
  • 网站瀑布流怎么做营销方案怎么写?
  • 武汉做网站的上市公司网站搭建平台
  • 中国建设个人网上银行官网谷歌seo技巧
  • 图片类网站建设seo综合查询是什么
  • 网站建设维护日记搜索关键词软件
  • 做网站的软件公司谷歌收录提交入口
  • 美国有线电视新闻网官网厦门百度快照优化排名
  • 苏州公司网站建设方案北京seo包年