Избегайте новой строки в qDebug ()

Иногда я хочу вывести одну строку в qDebug(), но с некоторым условным текстом, вроде

if (fontMetricsLeading < 0)
qDebug() << "!!!";
qDebug() << fontMetricsLeading;

Однако это вывело бы их на 2 отдельные строки.

Есть ли способ избежать добавления новой строки после каждого qDebug()?

16

Решение

Я только что нашел решение, которое, кажется, работает. Чтение документов qDebug () возвращает временный объект QDebug, который добавляет новую строку при уничтожении. Кажется, этот временный объект может быть сохранен во временной переменной:

QDebug debug = qDebug();
if (fontMetricsLeading < 0)
debug << "!!!";
debug << fontMetricsLeading;
29

Другие решения

Вы можете использовать троичный оператор.

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 );
0
По вопросам рекламы [email protected]