有时我想在qDebug()
中输出一行,但是有一些条件文本,比如
if (fontMetricsLeading < 0)
qDebug() << "!!!";
qDebug() << fontMetricsLeading;
然而,这将在两个单独的行上输出它们。
有没有办法避免在每个qDebug()
后添加新行?
答案 0 :(得分:30)
我刚刚找到了一个似乎有效的解决方案。读取文档qDebug()返回一个临时的QDebug对象,该对象在销毁时附加换行符。看来这个临时对象可以存储在一个临时变量中:
QDebug debug = qDebug();
if (fontMetricsLeading < 0)
debug << "!!!";
debug << fontMetricsLeading;
答案 1 :(得分:3)
您可以使用三元运算符。
qDebug() << (fontMetricsLeading < 0 ? "!!!" : "") << fontMetricsLeading;
另一种方法是在QString
中构建一个像这样的队列。
QString debugString;
if(fontMetricsLeading < 0)
debugString += "!!!";
debugString += QString::number(fontMetricsLeading);
qDebug() << debugString;
虽然我不明白为什么你需要这样做才能达到调试目的。
答案 2 :(得分:0)
处理你情况的另一种方法。
QString msg;
if ( fontMetricsLeading < 0 )
{
msg = "!!!";
}
qDebug( "%s, %d", qPrintable( msg ), fontMetricsLeading );