Dessiner des graphiques avec Qt

Publié dans C / C++ | Marqué avec , ,
Share

Dessiner des courbes, des graphiques, des histogrammes, c’est relativement faisable avec Qt. Il « suffit » d’utiliser la classe QGraphicsScene. C’est en réalité bien compliqué. Pour permettre la réutilisation (ce qui est souhaitable dans ce cas afin d’éviter les cheveux blancs précoces), il est préférable d’étendre cette classe, et d’y ajouter une méthode « addCurve » auquel il faut fournir tout ce qui est nécessaire pour dessiner une courbe (au sens mathématiques du terme ou non) : une liste de points, une formule… Une autre méthode « addAxes » pourrait permettre de dessiner les deux axes.

Bref, franchement, j’en suis à la quatrième itération d’une classe appelée CurveGraphicScene, et ce n’est pas la panacée. Oh que non ! Quand j’aurai quelque chose d’un peu plus compréhensible, je verrai ce que je peux en dire ici.
En attendant, je note deux bibliothèques Qt : Qwt et QCustomPlot. Elles permettent de faire ce genre de choses, avec normalement moins de peines. Je n’ai pu encore les tester, soit à cause d’une difficulté d’installation, un manque de documentation (et donc la crainte d’y perdre beaucoup de temps), ou à cause des conditions d’utilisation non compatibles avec mes projets du moment.

Qwt

Qwt
Les possibilités ont l’air multiple et la documentation d’installation semble bien fournie. Cependant, je n’ai trouvé aucun exemple de codes… aïe ! Are you serious guys?
Sous licence LGPL.

Qwt : f(x) = sin(x)

Qwt : f(x) = sin(x)

QCustomPlot

QCustomPlot
Cette bibliothèque semble proposer de très bons rendus, et la documentation est bien fournie. Attention cependant, c’est sous licence GPL, ce qui exclue de l’utiliser à côté d’un code fermé. A voir avec l’auteur pour pouvoir l’utiliser en LGPL (ou licence commercial).

QCustomPlot : démo

QCustomPlot : démo

Bref, ça donne envie mais je vais rester à mes petits bouts de classes qui font juste ce que je leur demande (plus ou moins bien), en attendant une bonne occasion de tester tout cela.
En C++ pur, je n’ai aucune idée des outils que l’on peut utiliser…

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*