qDebug问题

luoqiya 2011-09-11 04:52:00
在win上玩ActiveQt操作MS Word,变写变调,大量使用了qDebug,现在想关闭qDebug的输出信息,按照帮助文档所示,定义宏QT_NO_DEBUG_OUTPUT就能够在编译时屏蔽掉打印信息,可是我不管在主函数定义,还是全局定义,都没有屏蔽掉打印信息,有大虾了解情况否,Qt版本4.7.3,开发环境Qt creator 2.2.1
...全文
716 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoqiya 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qianguozheng 的回复:]

有必要吗
[/Quote]
SunFrank1987 2011-09-13
  • 打赏
  • 举报
回复
写pro里阿
dbzhang800 2011-09-13
  • 打赏
  • 举报
回复
一般情况下,我们会这么用

CONFIG(debug, debug|release) { 
win32:CONFIG += console
}
else {
DEFINES += QT_NO_DEBUG_OUTPUT
}
hdong526 2011-09-13
  • 打赏
  • 举报
回复
有必要啊
luoqiya 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dbzhang800 的回复:]

你这个不叫全局定义!
我前面提到了,如果你要这么用,将 #define QT_NO_DEBUG_OUTPUT 放到该编译单元的第一行!至少也在你包含Qt的头文件(任何一个)之前。

或者,你在工程文件内定义一个全局的宏。
[/Quote]
谢谢回复!
OK,在将QT_DEBUG_NO_OUTPUT加载文件第一行就能够屏蔽qDebug()的输出,在Qt帮助文档中的介绍看来我是没完全理解,This function does nothing if QT_NO_DEBUG_OUTPUT was defined during compilation.这句话让我比较费解。。。
再次谢谢dbzhang800的回复,至于在.pro文件内定义,我不懂怎么定义,如果还是利用#define那岂不是当成注释信息了???
dbzhang800 2011-09-13
  • 打赏
  • 举报
回复
你这个不叫全局定义!
我前面提到了,如果你要这么用,将 #define QT_NO_DEBUG_OUTPUT 放到该编译单元的第一行!至少也在你包含Qt的头文件(任何一个)之前。

或者,你在工程文件内定义一个全局的宏。
luoqiya 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dbzhang800 的回复:]

引用楼主 luoqiya 的回复:
在win上玩ActiveQt操作MS Word,变写变调,大量使用了qDebug,现在想关闭qDebug的输出信息,按照帮助文档所示,定义宏QT_NO_DEBUG_OUTPUT就能够在编译时屏蔽掉打印信息,可是我不管在主函数定义,还是全局定义,都没有屏蔽掉打印信息,有大虾了解情况否,Qt版本4.7.3,开发环境Qt creator 2.2.1

你在ma……
[/Quote]
谢谢回复!
首先,在main函数中定义宏QT_NO_DEBUG_OUTPUT没有作用我能够理解。
全局定义是在main函数之外,声明的全局

#include <QtGui/QApplication>
#include "mainwindow.h"
#define QT_NO_DEBUG_OUTPUT
#include <QDebug>
#include <QDir>


int main(int argc, char *argv[])
{
QApplication a(argc, argv);

qDebug() << "a";

return a.exec();
}

这样写在win下得Qt creator仍然会有a字符串的输出。

我其实就是希望能够在我希望的文件下有debug信息,当我需要看调试信息就定义一个宏,这样就能看qDebug()的打印信息,不想看就注释掉,为偷懒就可以不需要删除代码中得qDebug()
我做了个方法
#ifndef debugfile
#define debug__
#else
#define debug__ qDebug()<<
#endif
利用debug__替代代码中得qDebug()函数,不过考虑Qt中应该有实现,所以我弱弱的问下。。。
dbzhang800 2011-09-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 luoqiya 的回复:]
在win上玩ActiveQt操作MS Word,变写变调,大量使用了qDebug,现在想关闭qDebug的输出信息,按照帮助文档所示,定义宏QT_NO_DEBUG_OUTPUT就能够在编译时屏蔽掉打印信息,可是我不管在主函数定义还是全局定义,都没有屏蔽掉打印信息,有大虾了解情况否,Qt版本4.7.3,开发环境Qt creator 2.2.1
[/Quote]
你在main函数中定义这个宏,肯定没用,除非你的include语句也都写在main函数内。

全局定义肯定可以。但不知道你的是如何全局定义的。是在pro文件内定义的?还是直接修改的makefile文件?还是修改的pro使用的某个prf文件?还是修改工程的 .qmake.cache 文件?

如果你只是想禁用某个编译单元的输出。直接在那个cpp文件的第一行定义一下,也没有什么不可。
钱国正 2011-09-11
  • 打赏
  • 举报
回复
有必要吗

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧