Иногда я хочу вывести одну строку в 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 );