Избегайте новой строки в qDebug()
Иногда я хочу вывести одну строку в qDebug()
, но с некоторым условным текстом, например
if (fontMetricsLeading < 0)
qDebug() << "!!!";
qDebug() << fontMetricsLeading;
Однако это будет выводить их на 2 отдельные строки.
Есть ли способ избежать добавления новой строки после каждого qDebug()
?
Ответы
Ответ 1
Я нашел решение, которое, похоже, работает. Чтение документов qDebug() возвращает временный объект QDebug, который добавляет новую строку при уничтожении. Кажется, этот временный объект может храниться во временной переменной:
QDebug debug = qDebug();
if (fontMetricsLeading < 0)
debug << "!!!";
debug << fontMetricsLeading;
Ответ 2
Вы можете использовать тернарный оператор.
qDebug() << (fontMetricsLeading < 0 ? "!!!" : "") << fontMetricsLeading;
Альтернативой было бы создание очереди в QString
, как это.
QString debugString;
if(fontMetricsLeading < 0)
debugString += "!!!";
debugString += QString::number(fontMetricsLeading);
qDebug() << debugString;
Хотя я не понимаю, почему вам нужно идти в этом направлении, если оно предназначено только для отладки.
Ответ 3
Еще один способ справиться с вашей ситуацией.
QString msg;
if ( fontMetricsLeading < 0 )
{
msg = "!!!";
}
qDebug( "%s, %d", qPrintable( msg ), fontMetricsLeading );