Zeichengeräte und Backends
Erstellen eines Zeichenobjekts
Die Klasse „ QPaintDevice “ ist die Basisklasse für Objekte, die gezeichnet werden können, d. h., „ QPainter “ kann auf jeder Unterklasse von „ QPaintDevice “ zeichnen. Die Zeichenfunktionen von „ QPaintDevice “ werden unter anderem durch „ QWidget “, „ QImage “, „ QPixmap “, „ QPicture “, „ QPrinter “ und „ QOpenGLPaintDevice “ implementiert.
| Widget Die Klasse „ QWidget “ ist die Basisklasse für Benutzeroberflächenelemente im Qt Widgets Moduls. Sie empfängt Maus-, Tastatur- und andere Ereignisse vom Fenstersystem und zeichnet eine Darstellung ihrer selbst auf dem Bildschirm. |
| Bild Die Klasse „ QImage “ bietet eine hardwareunabhängige Bilddarstellung, die für Ein- und Ausgabevorgänge sowie für den direkten Zugriff auf und die Bearbeitung von Pixeln konzipiert und optimiert ist. „ QImage “ unterstützt mehrere Bildformate, darunter monochrome, 8-Bit-, 32-Bit- und Alpha-Blend-Bilder. Ein Vorteil der Verwendung von „ QImage “ als Zeichenobjekt besteht darin, dass die Pixelgenauigkeit jeder Zeichenoperation plattformunabhängig gewährleistet werden kann. Ein weiterer Vorteil ist, dass das Zeichnen in einem anderen Thread als dem aktuellen GUI-Thread erfolgen kann. |
| Pixmap Die Klasse „ QPixmap “ ist eine Off-Screen-Bilddarstellung, die für die Anzeige von Bildern auf dem Bildschirm konzipiert und optimiert ist. Im Gegensatz zu „ QImage “ sind die Pixeldaten in einer Pixmap intern und werden vom zugrunde liegenden Fenstersystem verwaltet, d. h., auf die Pixel kann nur über „ QPainter “-Funktionen oder durch Konvertierung der „ QPixmap “ in eine „ QImage “ zugegriffen werden. Um das Zeichnen mit „ QPixmap “ zu optimieren, stellt Qt die Klasse „ QPixmapCache “ zur Verfügung, mit der temporäre Pixmaps gespeichert werden können, deren Erstellung rechenintensiv ist, ohne dabei mehr Speicherplatz als das Cache-Limit zu beanspruchen. Qt stellt außerdem die Komfortklasse „ QBitmap “ bereit, die von „ QPixmap “ erbt. „ QBitmap “ garantiert monochrome (1-Bit-Tiefe) Pixmaps und wird hauptsächlich zum Erstellen benutzerdefinierter „ QCursor “- und „ QBrush “-Objekte sowie zum Erstellen von „ QRegion “-Objekten verwendet. |
| OpenGL-Paint-Device Wie bereits erwähnt, bietet Qt Klassen an, die die Verwendung von OpenGL in Qt-Anwendungen vereinfachen. So ermöglicht beispielsweise das „ QOpenGLPaintDevice “ die Nutzung der OpenGL-API für das Rendern mit „ QPainter “. |
| Abbildung Die Klasse „ QPicture “ ist ein Zeichen-Gerät, das „ QPainter “-Befehle aufzeichnet und wiederabspielt. Ein „Picture“ serialisiert Zeichenbefehle in einem plattformunabhängigen Format auf ein E/A-Gerät. „ QPicture “ ist zudem auflösungsunabhängig, d. h., ein „ QPicture “ kann auf verschiedenen Geräten (z. B. SVG, PDF, PS, Drucker und Bildschirm) angezeigt werden und sieht dabei immer gleich aus. Qt stellt die Funktionen „ QPicture::load()“ und „ QPicture::save()“ sowie Streaming-Operatoren zum Laden und Speichern von Bildern bereit. |
| Benutzerdefinierte Backends Die Unterstützung für ein neues Backend kann implementiert werden, indem man von der Klasse ` QPaintDevice ` ableitet und die virtuelle Funktion ` QPaintDevice::paintEngine()` neu implementiert, um ` QPainter ` mitzuteilen, welche Zeichen-Engine zum Zeichnen auf diesem bestimmten Gerät verwendet werden soll. Um tatsächlich auf dem Gerät zeichnen zu können, muss es sich bei dieser Zeichen-Engine um eine benutzerdefinierte Zeichen-Engine handeln, die durch Ableitung von der Klasse ` QPaintEngine ` erstellt wurde. |
© 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.