Éviter newline à qDebug()

Parfois je veux sortir une seule ligne dans qDebug(), mais avec un texte conditionnel, comme

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

cependant, cela les produirait sur 2 lignes séparées.

Est-il un moyen pour éviter l'ajout d'une nouvelle ligne après chaque qDebug()?

16
demandé sur sashoalm 2012-11-18 11:11:37

3 réponses

je viens de trouver une solution qui semble fonctionner. La lecture du docs qDebug () renvoie un objet QDebug temporaire, qui ajoute newline à la destruction. Il semble que cet objet temporaire puisse être stocké dans une variable temporaire:

QDebug debug = qDebug();
if (fontMetricsLeading < 0)
    debug << "!!!";
debug << fontMetricsLeading;
29
répondu sashoalm 2012-11-18 07:37:59

Vous pouvez utiliser l'opérateur ternaire.

qDebug() << (fontMetricsLeading < 0 ? "!!!" : "") << fontMetricsLeading;

Une autre solution serait de construire une file d'attente dans un QString comme ceci.

QString debugString;

if(fontMetricsLeading < 0)
    debugString += "!!!";

debugString += QString::number(fontMetricsLeading);

qDebug() << debugString;

Bien que je ne vois pas pourquoi vous auriez besoin d'aller à cette mesure si c'est juste pour des fins de débogage.

3
répondu Austin Brunkhorst 2012-11-18 07:28:12

une autre façon de gérer votre situation.

QString msg;

if ( fontMetricsLeading < 0 )
{
    msg = "!!!";
}

qDebug( "%s, %d", qPrintable( msg ), fontMetricsLeading );
0
répondu warunanc 2012-11-18 09:46:32