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

sas*_*alm 17 c++ qt newline qdebug

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

if (fontMetricsLeading < 0)
    qDebug() << "!!!";
qDebug() << fontMetricsLeading;
Run Code Online (Sandbox Code Playgroud)

但是,这将在两个单独的行上输出它们.

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

sas*_*alm 32

我刚刚找到了一个似乎有用的解决方案.读取文档qDebug()返回一个临时的QDebug对象,该对象在销毁时附加换行符.看来这个临时对象可以存储在一个临时变量中:

QDebug debug = qDebug();
if (fontMetricsLeading < 0)
    debug << "!!!";
debug << fontMetricsLeading;
Run Code Online (Sandbox Code Playgroud)

  • Qt 5.7(也可能是任何 5.x)中的事情更加复杂(我可能会添加不必要的复杂)。`qDebug()` 不再变成一个随时可用的 `QDebug` 对象,因此人们必须通过阅读大量文档来解决整个问题。很烦人。 (2认同)