Qt的qDebug使用

Qt的qDebug使用Qt的qDebug使用使用”qDebug()”一定要添加头文件#include然而intnum=20;charstr[20]=”helloworld”;qDebug(“如果只写在括号里,是不

Qt的qDebug使用"

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注