2017-02-27 68 views
0

注意:這是一個相當天真的問題。如何獲得像QOpenGLContext的常見Qt5類型的字符串表示形式?

期間在QT5C++應用程序打印內部變量的值,它是有用的調試和記錄,並在Qt常見的方法是使用qDebug()有這樣的朋友:

qDebug()<<"The value was: "<< myVar; 
// Usually works well even for built-in Qt types 

這似乎適用於許多內置的Qt5特定類型,甚至指針,但是在不輸出日誌的情況下,我們實際上正在構建一個字符串,這變得更加麻煩。

QString myString= "The value was: "+myVar; 
// Usually doesn't work well for built-in Qt types 

所以現在的問題是,什麼是得到的等效字符串表示良好的通用方式內置的Qt類型,你會從他們分流到qDebug得到()?

或「Qt類型的Java toString()等效於什麼」?

+0

無論誰投票結束這個問題,我真的想知道你的理由!它怎麼可能被視爲「基於意見」?那究竟是什麼意見?謝謝! –

回答

2

QDebug class documentation我能找到它具有構造

QDebug::QDebug(QString *string) 

構造一個寫入給定的字符串

調試流所以這應該工作:

QString myString; 
QDebug stream(&myString); 
stream <<"The value was: "<< myVar; 
1

格式內容的Qt調試輸出不屬於API的一部分。他們可以隨時更改。每次更新Qt時,您都必須對輸出進行審計,否則除調試以外不得依賴它。這就是爲什麼這些API使得在調試輸出和字符串之間進行轉換時有目的的麻煩。

相反,請爲您需要的類型實現您自己的QTextStream運算符,然後使用該流構建字符串。

+0

這種轉換的有用性和便利性是否可以說超過了這些擔憂?在最壞的情況下,在文檔中可以明確提到,在任何情況下,輸出都不應該用於除調試之外的其他目的。 –

+0

如果您正在調試,請使用'qDebug'。您可以重新實現消息處理程序來捕獲輸出,例如記錄等等,但是您根本不需要手動處理字符串轉換。 –

相關問題