在项目开发中,我们调试程序时,最常用的是打印信息。 Qt为我们提供了非常方便的打印信息类QDebug。
大家应该已经熟练使用了QDebug,但可能也有没有注意到的地方。 认真的行人介绍QDebug的一般特性。
1 qDebug()的最常用法
就像我们使用qDebug使用std:cout一样,在重定向操作符()之后直接加上我们的字符串就可以了。
例如:
qDebug () Hello ) 123; qDebug ) )也可以打印Qt中的基本类型,例如QString,QByteArray,QDate,QRectF,QVariantHash,QFont。 对于Qt中的基本类型,可以在帮助文档中搜索关键字QMetaType,但此处不提供。
例如:
qDebug () qstring ) ) Hello ) ) q点) 10、10; 以上使用方法必须包含头文件QDebug
#include QDebug
2 不包含头文件,直接使用qDebug()
一般来说,每次我们使用qDebug )时,都会要求包含头文件qDebug。 如果习惯用c语言格式化输出,还可以按如下方式输出打印信息:
#includeqobjectintmain(intargc,char * argv [ ] ) (intnum=20; char str[20]='hello world '; qDebug ('如果只写在括号中,则不需要qDebug头文件%d %s ',num,str ); }
实际的qDebug包含在qlongging.h中。 我们的Qt程序通常包含QObject,所以这里的头文件包含QObject,所以不需要添加qDebug头文件。
此方法在仅打印临时基本类型信息(如字符串)时非常有用,但请记住,Qt支持的基本类型无法打印。
3 为自定义类添加qDebug()打印
要使用qDebug打印自定义类信息,请执行以下操作:
# includeqdebugclassstudent { public : student (constqstringnm ) {name=nm; } QString getName () const ) returnname; }private: QString name; (; qdebugoperator(qdebugdebug,const Student c ) ) { debug c.getName; 返回调试; }intmain(intargc,char *argv[] ) studentstudent('John ); qDebug ) ) student; }首先,定制了类Student,并创建了用于获取构造函数和名称的检索器。
然后定义“”操作符并打印名称。
最后,main函数创建Student的一个实例,并使用qDebug ()打印该实例。
4 消除qDebug()打印
qDebug的打印信息主要是为了在调试程序时尽快找到错误,所以在发行版本时需要去除debug打印。 可以在提高程序执行速度的同时减少程序的体积。
在我做的项目中,有很多人用添加评论的方法去除印刷。 这个方法是可能的,但不太有效。 如果有一天程序出现了错误,就需要从注释中删除打印信息。 这很辛苦。 当然,给日志排名也是个好主意。
要解决此问题,只需在pro文件中添加一行预定义的宏。
DEFINES =QT_NO_DEBUG_OUTPUT
在你的程序中添加这个宏,重新编译可执行程序,看看你的打印信息有没有用完。 哈哈,这个方便吗? Qt这么了解你。
q关于qDebug的知识点,掌握以上知识,在我们的项目开发中基本上已经足够了。 感兴趣的人也可以检查qWarning () (qCritical ) (qFatal ) )等函数。 可能是qDebug ) )类似。