2016-08-25 39 views
4

我想用自定義的默認浮點精度和數字格式使用qDebug(),qInfo()等。你能設置全局的qDebug()浮點精度和數字格式嗎?

有沒有辦法來定義這個全局?

想象一下:

double num = 1.2; 
qDebug() << "My floating point Number is: " << QString::number(num, 'f', 2); 
//Output: My floating point Number is 1.20 

現在我想避免的QString ::號碼(NUM,「F」,2)每次我寫一個數字,寧願喜歡用一個標準的Percision和格式。

+0

這是不可能改變它是全球性的(除非你已經準備好改變Qt源代碼並重新編譯它們)。最接近的可能是創建你自己的替代'qDebug()'函數並使用它。您可以重新定義運算符<<用於浮點數並保持其餘不變。 –

回答

1

你不能。 qDebug(),qFatal()等...返回類QDebug的實例。

問題是運營商QDebug::operator<<(float f)是一個非虛擬類成員函數。
你不能沒有得到編譯錯誤消息

操作< <另一個定義是模糊的

9

通過QTextStream manipulators格式化QDebugcan be controlled的。因此,您必須在程序開始時致電

qDebug() << fixed << qSetRealNumberPrecision(2); 

但是,請注意,如果某些(不太仔細書寫)的代碼集需要格式化並且在完成其作業後不將其恢復到以前的狀態,格式化狀態qDebug()可能會稍後更改。

EDIT

事實證明的QTextStream操縱器(至少在與qDebug()組合)的效果是有限的,以含語句,並且不存在。所以,你能做的最好的是定義你更換qDebug()如下:

#define myqDebug() qDebug() << fixed << qSetRealNumberPrecision(2) 

,並用它來代替qDebug()

double num = 1.2; 
myqDebug() << "My floating point Number is: " << num << endl; 

輸出:

My floating point Number is: 1.20