簡體   English   中英

qtDebug()語法如何工作

[英]how does qtDebug() syntax work

這是qt文檔中提供的qDebug()的替代語法。

qDebug()<<“ Brush:” << myQBrush <<“ Other value:” << i;

“ <<”運算符在這里做什么? 他們是否將字符串放入函數中? 它是在c ++語法中允許還是僅在Qt中工作(因為文檔也談到了QtDebugMsg)

具有這種語法(帶有空括號的qDebug ),它將返回 QDebug對象,該對象的operator<< 重載,並且每次操作員完成操作時,它都會返回對QDebug對象的引用,以便您可以鏈接操作。


qDebug是一個宏,定義為:

QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug

因此,如果您編寫qDebug它將被上面的行替換,但是QMessageLogger::debug是一個函數,而不是一個字段,因此您不能以這種方式訪問​​它。 顯然,使用函數的正確方法是在其上添加() 因此,我們編寫了qDebug()並在宏得到擴展后得到:

QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug()

這意味着:創建一個QMessageLogger類型的臨時對象,並在其上調用debug方法。 什么是debug方法? 它是: QDebug debug() const; 因此, qDebug()行為我們提供了QDebug類型的臨時對象。

然后在這個臨時對象上,我們調用一個operator<< (將使用哪個取決於參數類型)。

這是一個流運算符。

輸出流對標准類型使用插入(<<)運算符。 您也可以為自己的類重載<<操作符。

這是MSDN文檔: https : //msdn.microsoft.com/zh-cn/library/1z2f6c2k.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM