Qwt : bibliothèque de widgets Qt: courbes, images, couleurs, graduations (linéaires, log, ...)

Fiche PLUME
  • Création ou MAJ importante : 26/05/2010
  • Correction mineure : 23/07/2013
  • Auteur : Jean-Didier Lemaréchal - LENA - Neurosciences Cognitives et Imagerie Cérébrale (CNRS)
  • Responsable thématique : fenix-contact fenix-contact (CNRS)
  • Relecteur 1 : Laurent Garnier
  • Relecteur 2 : Thierry Dumont
Mots clés
Description
Fonctionnalités générales

Qwt est une extension de la bibliothèque de widgets Qt (composants d'interface graphique).

Le principal widget, QwtPlot, sert à représenter des données en 2D(items).
Une fois créés, les items (courbes, marqueurs, grilles, images, objets SVG, ...) sont ajoutés dans un QwtPlot qui se charge ensuite de leur affichage. L'héritage C++ permet de créer ses propres types d'item (voir l'exemple avec l'histogramme).

Un QwtPlot peut définir jusqu'à 4 axes (verticaux à gauche ou à droite et horizontaux en haut ou en bas), chaque item étant attaché (relié) à un axe X (haut ou bas) et un axe Y (gauche ou droit) afin de mapper les données réelles de l'item (y = f(x) pour une courbe) au système de coordonnées écran.
Chaque axe est paramétrable (extrema, affichage des graduations, mapping linéaire, logarithmique ou "user-defined").

Un système de sélection de zone permet de sélectionner (à la souris, au clavier) graphiquement un point, un rectangle (sans avoir besoin de redessiner tous les items présents dans le QwtPlot). Une fois la sélection effectuée, les coordonnées de la sélection (pixels) peuvent être mappés en coordonnées réelles afin de traiter la sélection.
Dans le cas du zoom, les graduations des axes sont mises à jour avec les coordonnées réelles de la sélection puis les items sont redessinés, en tenant compte de la nouvelle fenêtre d'affichage.

Il existe aussi d'autres widgets que le QwtPlot: sliders avec graduations, boussoles, potentiomètres, thermomètres et tout autres widgets d'un tableau de bord...

Le mapping (linéaire, logarithmique,...) d'intervalles de valeurs réelles avec des intervalles de valeurs entières peut être utilisé indépendemment de l'objet QwtPlot: soit dans un contexte graphique (définir un mapping et le représenter avec une échelle graduée) soit dans un contexte non graphique (mapping seul).

Autres fonctionnalités

L’approche de la bibliothèque Qwt est très similaire syntaxiquement et fonctionnellement à la bibliothèque Qt.
Les widgets de Qwt sont accessibles dans le designer Qt, un module Python est disponible (grâce au wrapper sip).
Les exemples d'utilisation (C++ et Python) donnent un aperçu rapide, clair et essentiel des principales fonctionnalités de la librairie et de contextes d'utilisation.

Interopérabilité

Rien de spécial à préciser si ce n'est la prise en charge très utile du format SVG pour de jolis rendus sur posters.

Contexte d'utilisation dans mon laboratoire/service

Utilisé pour étendre les fonctionnalités de Qt dans un contexte d'affichage et de visualisation de données 2D.

Environnement du logiciel
Plates-formes

Qwt 5 est disponible dans tous les environnements disposant de Qt.

Logiciels connexes

Qt : http://www.projet-plume.org/fr/fiche/qt
QwtPolar, a polar plot widget ( http://qwtpolar.sourceforge.net/ ).
QwtPlot3D, an OpenGL 3D plot widget ( http://qwtplot3d.sourceforge.net/ ).
QtiPlot, data analysis and scientific plotting tool, using QwtPlot ( http://soft.proindependent.com/qtiplot.html ).

Environnement de développement
Type de structure associée au développement

Qwt est développé principalement par Uwe Rathmann (rathmann [at] users [dot] sourceforge [dot] net).

Eléments de pérennité
  • Le code est simple (rien de tordu ni d'obscur) et robuste (pas de bugs majeurs connus non corrigés)
  • Le développement (code, version, faq, news-letter) reste actif
  • Une mailing liste active
Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur

Les exemples, illustrant les cas d'utilisation généraux, constituent la principale documentation utilisateur.
Ils donnent un aperçu rapide des fonctionnalités de la librairie et leur code simplifié sert facilement de point de départ pour une utilisation plus avancée.
Ensuite, la documentation programmeur (doxygen, html) fournit la liste complète des classes et des fonctionnalités de la librairie ainsi que quelques explications sur la manière de les utiliser.
Enfin, arrivé à un stade, on ne peut s'empêcher d'aller regarder le code source (assez clair) pour des questions bien précises concernant le fonctionnement interne (implémentation, optimisation, rendu, extensions).