Sur cette page

Périphériques de peinture et backends

Création d’un périphérique de dessin

La classe ` QPaintDevice ` est la classe de base des objets pouvant être dessinés ; en d’autres termes, ` QPainter ` peut dessiner sur n’importe quelle sous-classe de ` QPaintDevice `. Les capacités de dessin de ` QPaintDevice` sont notamment implémentées par ` QWidget`, ` QImage`, ` QPixmap`, ` QPicture`, ` QPrinter` et ` QOpenGLPaintDevice`.

Widget

La classe QWidget est la classe de base des éléments d’interface utilisateur du Qt Widgets module. Elle reçoit les événements de souris, de clavier et autres provenant du système de fenêtrage, et dessine sa propre représentation à l’écran.

Image

La classe ` QImage ` fournit une représentation d’image indépendante du matériel, conçue et optimisée pour les E/S, ainsi que pour l’accès direct aux pixels et leur manipulation. ` QImage ` prend en charge plusieurs formats d’image, notamment les images monochromes, 8 bits, 32 bits et avec canal alpha.

L’un des avantages de l’utilisation d’ QImage comme périphérique de dessin réside dans la possibilité de garantir la précision au pixel près de toute opération de dessin, et ce de manière indépendante de la plate-forme. Un autre avantage est que le dessin peut être effectué dans un thread différent du thread actuel de l’interface graphique.

Pixmap

La classe ` QPixmap ` est une représentation d’image hors écran conçue et optimisée pour l’affichage d’images à l’écran. Contrairement à ` QImage`, les données de pixels d’un pixmap sont internes et gérées par le système de fenêtrage sous-jacent ; en d’autres termes, les pixels ne sont accessibles que via les fonctions ` QPainter ` ou en convertissant l’ QPixmap ` en ` QImage`.

Pour optimiser le dessin avec QPixmap, Qt fournit la classe QPixmapCache, qui permet de stocker des pixmaps temporaires dont la génération est coûteuse, sans pour autant utiliser plus d’espace de stockage que la limite du cache.

Qt fournit également la classe de commodité ` QBitmap `, qui hérite de ` QPixmap`. ` QBitmap ` garantit des images bitmap monochromes (profondeur de 1 bit) et est principalement utilisée pour créer des objets ` QCursor ` et ` QBrush ` personnalisés, ainsi que pour construire des objets ` QRegion `.

Périphérique de dessin OpenGL

Comme mentionné précédemment, Qt propose des classes qui facilitent l’utilisation d’OpenGL dans les applications Qt. Par exemple, l’ QOpenGLPaintDevice permet d’utiliser l’API OpenGL pour le rendu via QPainter.

Image

La classe « QPicture » est un périphérique de dessin qui enregistre et rejoue les commandes « QPainter ». Une image sérialise les commandes de dessin vers un périphérique d’E/S dans un format indépendant de la plateforme. « QPicture » est également indépendant de la résolution, c’est-à-dire qu’une image « QPicture » peut être affichée sur différents périphériques (par exemple svg, pdf, ps, imprimante et écran) tout en conservant le même aspect.

Qt fournit les fonctions ` QPicture::load()` et ` QPicture::save()`, ainsi que des opérateurs de flux pour le chargement et l’enregistrement d’images.

Backends personnalisés

La prise en charge d’un nouveau backend peut être implémentée en dérivant de la classe QPaintDevice et en réimplémentant la fonction virtuelle QPaintDevice::paintEngine() afin d’indiquer à QPainter quel moteur de dessin doit être utilisé pour dessiner sur ce périphérique particulier. Pour pouvoir réellement dessiner sur le périphérique, ce moteur de dessin doit être un moteur personnalisé créé en dérivant de la classe QPaintEngine.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.