有时我想在 中输出一行qDebug()
,但带有一些条件文本,例如
if (fontMetricsLeading < 0)
qDebug() << "!!!";
qDebug() << fontMetricsLeading;
但是,这会将它们输出到 2 个单独的行上。
有没有办法避免在每个之后添加一个新行qDebug()
?
我刚刚找到了一个似乎可行的解决方案。阅读文档 qDebug() 返回一个临时 QDebug 对象,该对象在销毁时附加换行符。看来这个临时对象可以存储在一个临时变量中:
QDebug debug = qDebug();
if (fontMetricsLeading < 0)
debug << "!!!";
debug << fontMetricsLeading;
您可以使用三元运算符。
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 );