Comment utiliser QCDebug ?
-
Bonjour,
Habitué à utiliser QDebug() depuis longtemps, j'ai appris l'existance de qCDebug(), et plus largement des Logging Caterories. Mais je n'arrive pas à l'utiliser.
Je continue ma découverte du framework QScxmlStateChart et je suis, grâce aux <log> l'activation des états.
Quand la machine d'états est au point je ne souhaite plus ces messages. Enlever alors les <log> est fastidieux, surtout s'il faut les remettre quand, finalement, la machine d'états n'était pas si au point que ça.
La doc de QScxmlStateMachine précise que cette classe définit 2 logging categories : qscxml et scxml. Je me suis dit alors qu'il est peut-être possible de désactiver la production des <log> en adaptant les règles des 2 catégories.
J'ai donc déjà commencé à essayer d'utilser qCDebug(), pour comprendre.
Dans qscxmlglobals_p.h il y a les deux lignes suivantes :Q_DECLARE_LOGGING_CATEGORY(qscxmlLog) Q_DECLARE_LOGGING_CATEGORY(scxmlLog)
Suivant les exemples trouvés ici et là j'ai tenté dans mon code, juste après les #include :
Q_LOGGING_CATEGORY(qscxmlLog,"qscxmlLog");
... ce que n'aime pas du tout l'éditeur de liens :
/home/sylvain/Developpements/EDS/EDS_sources/Widgets_Perso/graphefrequencearrivees.cpp:7: erreur : multiple definition of `qscxmlLog()'; commandestabs.o:/home/sylvain/Developpements/EDS/build-EDS-Desktop-Debug/../EDS_sources/CommandesTabs/commandestabs.cpp:10: first defined here
Plus loin, puis, dans une méthode
qCDebug(qscxmlLog) << "Changement de pas : " << p;
ne pose en revanche pas de soucis.
Il est évident que je ne pige pas quelque chose mais je n'arrive pas à savoir quoi.
Par avance merci !
Sylvain -
Bonjour,
L'erreur vient du fait de la re-déclaration que vous faites dans votre fichier.
Ces catégories existent déjà vu que déclarée dansqscxmlglobals_p.h
.
Pour votre code, vous devriez déclarer vos propres catégories afin de les garder indépendantes de celle de Qt et de pouvoir les filtrer à votre convenance.