Reputation: 79467
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()
?
Upvotes: 19
Views: 10856
Reputation: 2261
Another way of dealing with your situation.
QString msg;
if ( fontMetricsLeading < 0 )
{
msg = "!!!";
}
qDebug( "%s, %d", qPrintable( msg ), fontMetricsLeading );
Upvotes: 0
Reputation: 79467
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;
Upvotes: 35
Reputation: 21130
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.
Upvotes: 3