有時候我想輸出qDebug()
單行線,但也有一些有條件的文字,像避免換行()
if (fontMetricsLeading < 0)
qDebug() << "!!!";
qDebug() << fontMetricsLeading;
然而,將輸出他們在2條獨立的線路。
有沒有辦法避免在每個qDebug()
之後追加新行?
有時候我想輸出qDebug()
單行線,但也有一些有條件的文字,像避免換行()
if (fontMetricsLeading < 0)
qDebug() << "!!!";
qDebug() << fontMetricsLeading;
然而,將輸出他們在2條獨立的線路。
有沒有辦法避免在每個qDebug()
之後追加新行?
我剛剛發現了一個似乎可行的解決方案。讀取文檔qDebug()返回一個臨時QDebug對象,該對象在銷燬時追加換行符。看起來這個臨時對象可以存儲在一個臨時變量中:
QDebug debug = qDebug();
if (fontMetricsLeading < 0)
debug << "!!!";
debug << fontMetricsLeading;
在Qt 5.7中(可能在任何5.x中)事情更復雜(我可能會添加不必要的複雜)。 'qDebug()'不再變成一個隨時可用的'QDebug'對象,因此必須通過閱讀大量文檔來解決整個問題。非常煩人。 – rbaleksandar
您可以使用三元運算符。
qDebug() << (fontMetricsLeading < 0 ? "!!!" : "") << fontMetricsLeading;
另一種方法是建立在QString
這樣的隊列。
QString debugString;
if(fontMetricsLeading < 0)
debugString += "!!!";
debugString += QString::number(fontMetricsLeading);
qDebug() << debugString;
雖然我不明白你爲什麼會需要去到這個程度,如果只是用於調試目的。
處理您的情況的另一種方法。
QString msg;
if (fontMetricsLeading < 0)
{
msg = "!!!";
}
qDebug("%s, %d", qPrintable(msg), fontMetricsLeading);
後來我發現一個相關的問題(但詢問的空間爲好) - https://stackoverflow.com/questions/5209823/how-to-call-qdebug-without-the-appended-spaces- and-newline – sashoalm