Qt的qDebug使用
使用 ” qDebug() << “一定要添加头文件 #include
然而
int num = 20;
char str[20]="hello world";
qDebug("如果只写在括号里,是不需要QDebug头文件的 %d %s", num, str);
消除qDebug()打印
qDebug的打印信息,主要是为了方便调试程序时尽快找到bug,所以当我们在发布版本时,需要去掉debug打印,一方面可以加快我们程序的执行速度,另一方面可以减小我们程序的体积。
在我做的项目中有很多人是采用加注释的方法来去掉打印的,虽然这个方法可行,但不是很有效的,如果哪天程序出了bug还需要再把打印信息去掉注释,这是很麻烦的。当然,将日志分级也是个很不错的想法。
为了解决这个问题,你只需要在你的pro文件里加上一行预定义宏即可。
DEFINES += QT_NO_DEBUG_OUTPUT
在你的程序添加上这个宏,重新编译运行程序,看看你的打印信息是不是都不见了呢,哈哈,这是不是很方便啊,Qt就是这么的懂你。
为自定义类添加qDebug()打印
如果我们想要使用qDebug打印自定义类中的信息时就可以像以下这样做:
#include <QDebug>
class Student
{
public:
Student(const QString& nm){
name = nm;}
QString getName() const{
return name;}
private:
QString name;
};
QDebug operator<<(QDebug debug, const Student &c)
{
debug << c.getName();
return debug;
}
int main(int argc, char *argv[])
{
Student student("John");
qDebug() << student;
}
首先,自定义了一个类Student,编写了构造函数和获取姓名的获取器。
其次,定义了”<<“操作符,打印名字。
最后,在main函数中创建Student的实例,并用qDebug()打印该实例。
Qt QDebug 打印自定义结构体
1.简述
你还在到处这样打印结构体么?
qDebug()<<"Mc info:"<<info.m_id<<info.r_id<<info.display_type<<info.topic<<info.name<<info.sname;
我刚才还在这样打印结构体,不过我实在是受够了,一番折腾之后,我可以这样打印了
qDebug()<<"Mc info:"<<info;
2.代码
我们仅需要在结构体里声明一个友元函数,重载QDebug的<<即可。
#include <QDebug>
class Info
{
public:
QString m_id;
QString r_id;
QString display_type;
QString topic;
QString name;
QString sname;
friend QDebug& operator<<(QDebug out, const Info& info)
{
out <<info.m_id<<info.r_id<<info.display_type<<info.topic<<info.name<<info.sname;
return out;
}
};
今天的文章Qt的qDebug使用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/70159.html