18

有时我想在 中输出一行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 回答