避免在qDebug中使用换行符()

时间:2012-11-18 07:11:37

标签: c++ qt newline qdebug

有时我想在qDebug()中输出一行,但是有一些条件文本,比如

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

然而,这将在两个单独的行上输出它们。

有没有办法避免在每个qDebug()后添加新行?

3 个答案:

答案 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 );