Sometimes I want to output a single line in qDebug()
, but with some conditional text, like
if (fontMetricsLeading < 0)
qDebug() << "!!!";
qDebug() << fontMetricsLeading;
However, that would output them on 2 separate lines.
Is there a way to avoid appending a new line after each qDebug()
?
I just found a solution that seems to work. Reading the docs qDebug() returns a temporary QDebug object, which appends newline on destruction. It seems this temporary object can be stored in a temporary variable:
QDebug debug = qDebug();
if (fontMetricsLeading < 0)
debug << "!!!";
debug << fontMetricsLeading;
You can use the ternary operator.
qDebug() << (fontMetricsLeading < 0 ? "!!!" : "") << fontMetricsLeading;
An alternative would be to build a queue in a QString
like this.
QString debugString;
if(fontMetricsLeading < 0)
debugString += "!!!";
debugString += QString::number(fontMetricsLeading);
qDebug() << debugString;
Although I don't see why you would need to go to this extent if it's just for debug purposes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With