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;