QPaintDevice Class
Die Klasse „QPaintDevice“ ist die Basisklasse für Objekte, auf denen mit „ QPainter “ gezeichnet werden kann. Mehr dazu...
| Header: | #include <QPaintDevice> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| Vererbt an: | QImage, QOpenGLPaintDevice, QPagedPaintDevice, QPaintDeviceWindow, QPicture, QPixmap, QSvgGenerator sowie QWidget |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QPaintDevice ist Teil der Malklassen.
Öffentliche Typen
| enum | PaintDeviceMetric { PdmWidth, PdmHeight, PdmWidthMM, PdmHeightMM, PdmNumColors, …, PdmDevicePixelRatioF_EncodedB } |
Öffentliche Funktionen
| virtual | ~QPaintDevice() |
| int | colorCount() const |
| int | depth() const |
| qreal | devicePixelRatio() const |
| qreal | devicePixelRatioF() const |
| int | height() const |
| int | heightMM() const |
| int | logicalDpiX() const |
| int | logicalDpiY() const |
| virtual QPaintEngine * | paintEngine() const = 0 |
| bool | paintingActive() const |
| int | physicalDpiX() const |
| int | physicalDpiY() const |
| int | width() const |
| int | widthMM() const |
Statische öffentliche Mitglieder
(since 6.8) int | encodeMetricF(QPaintDevice::PaintDeviceMetric metric, double value) |
Geschützte Funktionen
| QPaintDevice() | |
| virtual int | metric(QPaintDevice::PaintDeviceMetric metric) const |
Ausführliche Beschreibung
Ein Zeichen-Device ist eine Abstraktion eines zweidimensionalen Raums, auf dem mithilfe eines „ QPainter “ gezeichnet werden kann. Der Ursprung seines Standardkoordinatensystems befindet sich in der Position oben links. Die X-Achse verläuft nach rechts und die Y-Achse nach unten. Die Einheit ist ein Pixel.
Die Zeichenfunktionen von `QPaintDevice` werden derzeit durch die Unterklassen ` QWidget`, ` QImage`, ` QPixmap`, ` QPicture` und ` QPrinter ` implementiert.
Um die Unterstützung für ein neues Backend zu implementieren, müssen Sie von `QPaintDevice` ableiten und die virtuelle Funktion ` paintEngine()` neu implementieren, um ` QPainter ` mitzuteilen, welche Zeichen-Engine zum Zeichnen auf diesem bestimmten Gerät verwendet werden soll. Beachten Sie, dass Sie außerdem eine entsprechende Zeichen-Engine erstellen müssen, um auf dem Gerät zeichnen zu können, d. h. von ` QPaintEngine ` ableiten und dessen virtuelle Funktionen neu implementieren.
Warnung: Qt setzt voraus, dass ein ` QGuiApplication `-Objekt existiert, bevor Paint-Geräte erstellt werden können. Paint-Geräte greifen auf Ressourcen des Fenstersystems zu, und diese Ressourcen werden erst nach der Erstellung eines Anwendungsobjekts initialisiert.
Die Klasse `QPaintDevice` stellt mehrere Funktionen bereit, die verschiedene Gerätemetriken zurückgeben: Die Funktion ` depth()` gibt die Bittiefe (Anzahl der Bitebenen) zurück. Die Funktion ` height()` gibt die Höhe in Einheiten des Standardkoordinatensystems zurück (z. B. Pixel für ` QPixmap ` und ` QWidget`), während ` heightMM()` die Höhe des Geräts in Millimetern zurückgibt. In ähnlicher Weise geben die Funktionen „ width()“ und „ widthMM()“ die Breite des Geräts in Einheiten des Standardkoordinatensystems bzw. in Millimetern zurück. Alternativ kann die geschützte Funktion „ metric()“ verwendet werden, um die metrischen Informationen abzurufen, indem der gewünschte „ PaintDeviceMetric “ als Argument angegeben wird.
Die Funktionen ` logicalDpiX()` und ` logicalDpiY()` geben die horizontale und vertikale Auflösung des Geräts in Punkten pro Zoll zurück. Die Funktionen ` physicalDpiX()` und ` physicalDpiY()` geben ebenfalls die Auflösung des Geräts in Punkten pro Zoll zurück; beachten Sie jedoch, dass bei einer Abweichung zwischen der logischen und der physikalischen Auflösung die entsprechende ` QPaintEngine ` die Zuordnung vornehmen muss. Schließlich gibt die Funktion ` colorCount()` die Anzahl der verschiedenen Farben zurück, die für das Malgerät verfügbar sind.
Siehe auch „ QPaintEngine“ , „ QPainter “, „Koordinatensystem“ und „Malsystem“.
Dokumentation zum Mitgliedstyp
enum QPaintDevice::PaintDeviceMetric
Beschreibt die verschiedenen Kennzahlen eines Malgeräts.
| Konstante | Wert | Beschreibung |
|---|---|---|
QPaintDevice::PdmWidth | 1 | Die Breite des Zeichenobjekts in den Einheiten des Standardkoordinatensystems (z. B. Pixel für QPixmap und QWidget). Siehe auch width(). |
QPaintDevice::PdmHeight | 2 | Die Höhe des Zeichenelements in den Einheiten des Standardkoordinatensystems (z. B. Pixel für QPixmap und QWidget). Siehe auch height(). |
QPaintDevice::PdmWidthMM | 3 | Die Breite des Zeichen-Geräts in Millimetern. Siehe auch widthMM(). |
QPaintDevice::PdmHeightMM | 4 | Die Höhe des Zeichen-Geräts in Millimetern. Siehe auch heightMM(). |
QPaintDevice::PdmNumColors | 5 | Die Anzahl der verschiedenen Farben, die für das Malwerkzeug verfügbar sind. Siehe auch colorCount(). |
QPaintDevice::PdmDepth | 6 | Die Bittiefe (Anzahl der Bit-Ebenen) des Malgeräts. Siehe auch depth(). |
QPaintDevice::PdmDpiX | 7 | Die horizontale Auflösung des Geräts in Punkten pro Zoll. Siehe auch logicalDpiX(). |
QPaintDevice::PdmDpiY | 8 | Die vertikale Auflösung des Geräts in Punkten pro Zoll. Siehe auch logicalDpiY(). |
QPaintDevice::PdmPhysicalDpiX | 9 | Die horizontale Auflösung des Geräts in Punkten pro Zoll. Siehe auch physicalDpiX(). |
QPaintDevice::PdmPhysicalDpiY | 10 | Die vertikale Auflösung des Geräts in Punkten pro Zoll. Siehe auch physicalDpiY(). |
QPaintDevice::PdmDevicePixelRatio | 11 | Das Gerätepixelverhältnis für das Gerät. Übliche Werte sind 1 für Displays mit normaler DPI und 2 für „Retina“-Displays mit hoher DPI. |
QPaintDevice::PdmDevicePixelRatioScaled | 12 | Das skalierte Gerätepixelverhältnis für das Gerät. Dies entspricht PdmDevicePixelRatio, mit dem Unterschied, dass der Wert um einen konstanten Faktor skaliert wird, um Zeichen-Geräte mit gebrochenen Skalierungsfaktoren zu unterstützen. Der verwendete konstante Skalierungsfaktor ist devicePixelRatioFScale(). Dieser Enum-Wert wurde in Qt 5.6 eingeführt. |
QPaintDevice::PdmDevicePixelRatioF_EncodedA (since Qt 6.8) | 13 | Dieser Enum-Eintrag wird zusammen mit dem entsprechenden Eintrag „ B “ für das Gerätepixelverhältnis des Geräts verwendet, und zwar als kodierter „ double “-Gleitkommawert. Eine Unterklasse von „ QPaintDevice “, die DPR-Werte mit Bruchzahlen unterstützt, sollte die Unterstützung für diese beiden Enum-Einträge in ihrer Überschreibung der Funktion „ metric()“ implementieren. Der Rückgabewert sollte das Ergebnis der Funktion „ encodeMetricF()“ sein. |
QPaintDevice::PdmDevicePixelRatioF_EncodedB (since Qt 6.8) | 14 | Siehe PdmDevicePixelRatioF_EncodedA. |
Siehe auch „ metric()“ und „ devicePixelRatio()“.
Dokumentation zu den Member-Funktionen
[noexcept protected] QPaintDevice::QPaintDevice()
Erstellt ein Malgerät. Dieser Konstruktor kann nur von Unterklassen von QPaintDevice aufgerufen werden.
[virtual noexcept] QPaintDevice::~QPaintDevice()
Löscht das Zeichenobjekt und gibt Systemressourcen des Fensters frei.
int QPaintDevice::colorCount() const
Gibt die Anzahl der verschiedenen Farben zurück, die für das Malgerät verfügbar sind. Ist die Anzahl der verfügbaren Farben zu groß, um durch den Datentyp „int“ dargestellt zu werden, wird stattdessen INT_MAX zurückgegeben.
int QPaintDevice::depth() const
Gibt die Bittiefe (Anzahl der Bitebenen) des Malgeräts zurück.
qreal QPaintDevice::devicePixelRatio() const
Gibt das Gerätepixelverhältnis für das Gerät zurück.
Übliche Werte sind 1 für Displays mit normaler DPI-Auflösung und 2 für „Retina“-Displays mit hoher DPI-Auflösung.
qreal QPaintDevice::devicePixelRatioF() const
Gibt das Gerätepixelverhältnis für das Gerät als Gleitkommazahl zurück.
[static, since 6.8] int QPaintDevice::encodeMetricF(QPaintDevice::PaintDeviceMetric metric, double value)
Gibt „ value “ zurück, kodiert für die Metrik „ metric “. Unterklassen, die „ metric()“ implementieren, sollten diese Funktion zur Kodierung verwenden
| Konstante | Beschreibung |
|---|---|
as | einen ganzzahligen Rückgabewert, wenn die Abfragemetrik einen kodierten Gleitkommawert angibt. |
Diese Funktion wurde in Qt 6.8 eingeführt.
int QPaintDevice::height() const
Gibt die Höhe des Zeichen-Geräts in den Einheiten des Standardkoordinatensystems zurück (z. B. Pixel bei QPixmap und QWidget).
Siehe auch heightMM().
int QPaintDevice::heightMM() const
Gibt die Höhe des Zeichen-Geräts in Millimetern zurück. Aufgrund von plattformspezifischen Einschränkungen ist es möglicherweise nicht möglich, diese Funktion zur Ermittlung der tatsächlichen physischen Größe eines Widgets auf dem Bildschirm zu verwenden.
Siehe auch ` height()`.
int QPaintDevice::logicalDpiX() const
Gibt die horizontale Auflösung des Geräts in Punkten pro Zoll zurück, die bei der Berechnung von Schriftgrößen verwendet wird. Bei X11 entspricht dieser Wert in der Regel dem Wert, der mit der Funktion „ widthMM()“ berechnet werden könnte.
Beachten Sie, dass, falls der Wert von `logicalDpiX()` nicht mit dem von ` physicalDpiX()` übereinstimmt, die entsprechende ` QPaintEngine ` die Auflösungszuordnung übernehmen muss.
Siehe auch logicalDpiY() und physicalDpiX().
int QPaintDevice::logicalDpiY() const
Gibt die vertikale Auflösung des Geräts in Punkten pro Zoll zurück, die bei der Berechnung von Schriftgrößen verwendet wird. Bei X11 entspricht dieser Wert in der Regel dem Wert, der mit ` heightMM()` berechnet werden könnte.
Beachten Sie, dass, falls der Wert von `logicalDpiY()` nicht mit dem von ` physicalDpiY()` übereinstimmt, die entsprechende Funktion ` QPaintEngine ` die Auflösungszuordnung übernehmen muss.
Siehe auch logicalDpiX() und physicalDpiY().
[virtual protected] int QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const
Gibt die Metrikinformationen für das angegebene Zeichen-Gerät „ metric “ zurück.
Siehe auch PaintDeviceMetric.
[pure virtual] QPaintEngine *QPaintDevice::paintEngine() const
Gibt einen Zeiger auf die Zeichen-Engine zurück, die zum Zeichnen auf dem Gerät verwendet wird.
bool QPaintDevice::paintingActive() const
Gibt „ true “ zurück, wenn das Gerät gerade gezeichnet wird, d. h. wenn jemand „ QPainter::begin()“ aufgerufen hat, aber noch nicht „ QPainter::end()“ für dieses Gerät aufgerufen hat; andernfalls wird „ false “ zurückgegeben.
Siehe auch QPainter::isActive().
int QPaintDevice::physicalDpiX() const
Gibt die horizontale Auflösung des Geräts in Punkten pro Zoll zurück. Beim Drucken bezieht sich diese Auflösung beispielsweise auf die physikalische Auflösung des Druckers. Die logische DPI hingegen bezieht sich auf die Auflösung, die von der eigentlichen Zeichen-Engine verwendet wird.
Beachten Sie, dass, wenn „physicalDpiX()“ nicht mit „ logicalDpiX()“ übereinstimmt, die entsprechende „ QPaintEngine “-Funktion die Auflösungszuordnung übernehmen muss.
Siehe auch „ physicalDpiY()“ und „ logicalDpiX()“.
int QPaintDevice::physicalDpiY() const
Gibt die horizontale Auflösung des Geräts in Punkten pro Zoll zurück. Beim Drucken bezieht sich diese Auflösung beispielsweise auf die physikalische Auflösung des Druckers. Die logische DPI hingegen bezieht sich auf die Auflösung, die von der eigentlichen Zeichen-Engine verwendet wird.
Beachten Sie, dass, wenn der Wert von `physicalDpiY()` nicht mit dem von ` logicalDpiY()` übereinstimmt, die entsprechende ` QPaintEngine ` die Auflösungszuordnung übernehmen muss.
Siehe auch „ physicalDpiX()“ und „ logicalDpiY()“.
int QPaintDevice::width() const
Gibt die Breite des Zeichen-Geräts in den Einheiten des Standardkoordinatensystems zurück (z. B. Pixel für QPixmap und QWidget).
Siehe auch widthMM().
int QPaintDevice::widthMM() const
Gibt die Breite des Zeichen-Geräts in Millimetern zurück. Aufgrund von Plattformbeschränkungen ist es unter Umständen nicht möglich, diese Funktion zur Ermittlung der tatsächlichen physischen Größe eines Widgets auf dem Bildschirm zu verwenden.
Siehe auch ` width()`.
© 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.