É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()
?
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;
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.
une autre façon de gérer votre situation.
QString msg;
if ( fontMetricsLeading < 0 )
{
msg = "!!!";
}
qDebug( "%s, %d", qPrintable( msg ), fontMetricsLeading );