日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

qdebug重定向_每个Qter都该知道的qDebug

發(fā)布時間:2024/10/8 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qdebug重定向_每个Qter都该知道的qDebug 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在項目的開發(fā)中,當我們調(diào)試程序時,最常用的就是打印信息了,Qt為我們提供了非常方便的打印信息類QDebug。

大家應(yīng)該已經(jīng)很熟練的使用QDebug了,但也許有些地方并沒有注意到,下面小豆君就介紹一下QDebug的一些常用特性。

1 qDebug()的最常用法

我們可以使用qDebug像使用std::cout一樣,直接在重定向操作符(<

如:

qDebug() << "Hello" << 123;

qDebug()還可以打印Qt中的基本類型,例如QString,QByteArray,QDate,QRectF,QVariantHash,QFont等等,關(guān)于Qt中的基本類型,大家可以在幫助文檔中搜索關(guān)鍵字QMetaType,這里就不列了。

如:

qDebug() << QString("Hello") << QPoint(10, 10);

以上的用法都必須包含頭文件QDebug

#include

2 不包含頭文件,直接使用qDebug()

一般的,每次我們使用qDebug()<

#include int main(int argc, char *argv[])

{

int num = 20;

char str[20]="hello world";

qDebug("如果只寫在括號里,是不需要QDebug頭文件的 %d %s", num, str);

}

實際qDebug是包含在qlongging.h中的,因為我們的Qt程序,一般都會包含QObject,所以這里的頭文件包含了QObject,從而我們就不必要額外的再添加QDebug頭文件。

以上對于只打印字符串等一些臨時性的基本類型信息時,使用這種方法是非常有效的,但是,要記住Qt所支持的基本類型是不可以打印的。

3 為自定義類添加qDebug()打印

如果我們想要使用qDebug打印自定義類中的信息時就可以像以下這樣做:

#include class Student

{

public:

Student(const QString& nm){name = nm;}

QString getName() const{return name;}

private:

QString name;

};

QDebug operator<

{

debug << c.getName();

return debug;

}

int main(int argc, char *argv[])

{

Student student("John");

qDebug() << student;

}

首先,自定義了一個類Student,編寫了構(gòu)造函數(shù)和獲取姓名的獲取器。

其次,定義了"<

最后,在main函數(shù)中創(chuàng)建Student的實例,并用qDebug()打印該實例。

4 消除qDebug()打印

qDebug的打印信息,主要是為了方便調(diào)試程序時盡快找到bug,所以當我們在發(fā)布版本時,需要去掉debug打印,一方面可以加快我們程序的執(zhí)行速度,另一方面可以減小我們程序的體積。

在我做的項目中有很多人是采用加注釋的方法來去掉打印的,雖然這個方法可行,但不是很有效的,如果哪天程序出了bug還需要再把打印信息去掉注釋,這是很麻煩的。當然,將日志分級也是個很不錯的想法。

為了解決這個問題,你只需要在你的pro文件里加上一行預(yù)定義宏即可。

DEFINES += QT_NO_DEBUG_OUTPUT

在你的程序添加上這個宏,重新編譯運行程序,看看你的打印信息是不是都不見了呢,哈哈,這是不是很方便啊,Qt就是這么的懂你。

關(guān)于qDebug的知識點小豆君就先講到這里吧,熟練掌握以上的知識在我們的項目開發(fā)中基本上是夠用了。有興趣的同學,還可以查看qWarning() qCritical() qFatal()這些函數(shù),大概夠和qDebug()類似,這里我就不講了。

關(guān)于Qt中的調(diào)試問題,隨著我們以后深入的學習,小豆君還會介紹Qt的新斷言機制,智能指針檢測識別機制,Creator調(diào)試器用法等。

如果你想要獲得更多干貨,請關(guān)注我的微信公眾號:小豆君,只要關(guān)注,便可加入小豆君為大家創(chuàng)建的C++\Qt交流群,方便討論學習。

總結(jié)

以上是生活随笔為你收集整理的qdebug重定向_每个Qter都该知道的qDebug的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。