有时我想在qDebug()
中输出一行文本,但带有一些条件文本,例如:
if (fontMetricsLeading < 0)
qDebug() << "!!!";
qDebug() << fontMetricsLeading;
然而,这样会将它们输出到2行。
是否有一种方法可以避免在每个qDebug()
后追加新行?
我刚刚找到了一个看起来可行的解决方案。阅读文档得知,qDebug()
返回一个临时的 QDebug 对象,在销毁时会追加换行符。这个临时对象似乎可以存储在临时变量中:
QDebug debug = qDebug();
if (fontMetricsLeading < 0)
debug << "!!!";
debug << fontMetricsLeading;
qDebug()
不再返回一个可直接使用的QDebug
对象,因此你必须通过阅读大量文档来解决整个问题。相当令人烦恼。 - rbaleksandarqDebug() << (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 );