避免在 qDebug() 中换行

Avoid newline in qDebug()

本文关键字:换行 qDebug      更新时间:2023-10-16

有时我想在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 );