18

1行を出力したい場合qDebug()がありますが、次のような条件付きテキストを使用します

if (fontMetricsLeading < 0)
    qDebug() << "!!!";
qDebug() << fontMetricsLeading;

ただし、それはそれらを2つの別々の行に出力します。

それぞれの後に新しい行を追加しないようにする方法はありqDebug()ますか?

4

3 に答える 3

35

うまくいくと思われる解決策を見つけました。ドキュメント qDebug() を読むと、破棄時に改行を追加する一時的な QDebug オブジェクトが返されます。この一時オブジェクトは一時変数に格納できるようです:

QDebug debug = qDebug();
if (fontMetricsLeading < 0)
    debug << "!!!";
debug << fontMetricsLeading;
于 2012-11-18T07:37:59.020 に答える
3

三項演算子を使用できます。

qDebug() << (fontMetricsLeading < 0 ? "!!!" : "") << fontMetricsLeading;

別の方法は、このような形でキューを構築することQStringです。

QString debugString;

if(fontMetricsLeading < 0)
    debugString += "!!!";

debugString += QString::number(fontMetricsLeading);

qDebug() << debugString;

デバッグ目的のためだけに、なぜこの程度まで行く必要があるのか​​ わかりませんが。

于 2012-11-18T07:22:42.800 に答える
0

あなたの状況に対処する別の方法。

QString msg;

if ( fontMetricsLeading < 0 )
{
    msg = "!!!";
}

qDebug( "%s, %d", qPrintable( msg ), fontMetricsLeading );
于 2012-11-18T09:46:32.770 に答える