Auf dieser Seite

QPaintEngine Class

Die Klasse „QPaintEngine“ liefert eine abstrakte Definition dafür, wie „ QPainter “ auf einer bestimmten Plattform auf einem bestimmten Gerät zeichnet. Mehr...

Header: #include <QPaintEngine>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Öffentliche Typen

enum DirtyFlag { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, DirtyBackground, …, AllDirty }
flags DirtyFlags
enum PaintEngineFeature { AlphaBlend, Antialiasing, BlendModes, BrushStroke, ConicalGradientFill, …, AllFeatures }
flags PaintEngineFeatures
enum PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode }
enum Type { X11, Windows, MacPrinter, CoreGraphics, QuickDraw, …, Direct2D }

Öffentliche Funktionen

QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
virtual ~QPaintEngine()
virtual bool begin(QPaintDevice *pdev) = 0
virtual void drawEllipse(const QRectF &rect)
virtual void drawEllipse(const QRect &rect)
virtual void drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)
virtual void drawLines(const QLineF *lines, int lineCount)
virtual void drawLines(const QLine *lines, int lineCount)
virtual void drawPath(const QPainterPath &path)
virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0
virtual void drawPoints(const QPoint *points, int pointCount)
virtual void drawPoints(const QPointF *points, int pointCount)
virtual void drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
virtual void drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
virtual void drawRects(const QRectF *rects, int rectCount)
virtual void drawRects(const QRect *rects, int rectCount)
virtual void drawTextItem(const QPointF &p, const QTextItem &textItem)
virtual void drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)
virtual bool end() = 0
bool hasFeature(QPaintEngine::PaintEngineFeatures feature) const
bool isActive() const
QPaintDevice *paintDevice() const
QPainter *painter() const
void setActive(bool state)
virtual QPaintEngine::Type type() const = 0
virtual void updateState(const QPaintEngineState &state) = 0

Ausführliche Beschreibung

Qt stellt mehrere vorgefertigte Implementierungen von QPaintEngine für die verschiedenen von uns unterstützten Mal-Backends bereit. Die primär bereitgestellte Mal-Engine ist die Raster-Mal-Engine, die einen Software-Rasterisierer enthält, der den vollständigen Funktionsumfang auf allen unterstützten Plattformen bietet. Dies ist die Standardeinstellung für das Zeichnen in Klassen auf Basis von „ QWidget “ – beispielsweise unter Windows, X11 und macOS –, dient als Backend für das Zeichnen in „ QImage “ und wird als Fallback für Zeichen-Engines verwendet, die eine bestimmte Funktion nicht unterstützen. Darüber hinaus stellen wir QPaintEngine-Implementierungen für OpenGL (zugänglich über ` QOpenGLWidget`) und für den Druck (wodurch die Verwendung von ` QPainter ` zum Zeichnen auf einem ` QPrinter `-Objekt möglich ist) bereit.

Wenn man „ QPainter “ verwenden möchte, um auf ein anderes Backend zu zeichnen, muss man eine Unterklasse von „QPaintEngine“ erstellen und alle ihre virtuellen Funktionen neu implementieren. Die „QPaintEngine“-Implementierung wird dann durch die Erstellung einer Unterklasse von „ QPaintDevice “ und die Neuimplementierung der virtuellen Funktion „ QPaintDevice::paintEngine()“ verfügbar gemacht.

QPaintEngine wird von der QPaintDevice erstellt, die sie angelegt hat, und steht in deren Besitz.

Siehe auch „ QPainter“ , „ QPaintDevice::paintEngine()“ und „Paint System“.

Dokumentation zu Mitgliedstypen

enum QPaintEngine::DirtyFlag
flags QPaintEngine::DirtyFlags

KonstanteWertBeschreibung
QPaintEngine::DirtyPen0x0001Der Stift ist verschmutzt und muss aktualisiert werden.
QPaintEngine::DirtyBrush0x0002Der Pinsel ist verschmutzt und muss aktualisiert werden.
QPaintEngine::DirtyBrushOrigin0x0004Der Pinselursprung ist verschmutzt und muss aktualisiert werden.
QPaintEngine::DirtyFont0x0008Die Schriftart ist verschmutzt und muss aktualisiert werden.
QPaintEngine::DirtyBackground0x0010Der Hintergrund ist verschmutzt und muss aktualisiert werden.
QPaintEngine::DirtyBackgroundMode0x0020Der Hintergrundmodus ist veraltet und muss aktualisiert werden.
QPaintEngine::DirtyTransform0x0040Die Transformation ist veraltet und muss aktualisiert werden.
QPaintEngine::DirtyClipRegion0x0080Der Ausschnittbereich ist veraltet und muss aktualisiert werden.
QPaintEngine::DirtyClipPath0x0100Der Ausschnittpfad ist veraltet und muss aktualisiert werden.
QPaintEngine::DirtyHints0x0200Die Render-Hinweise sind veraltet und müssen aktualisiert werden.
QPaintEngine::DirtyCompositionMode0x0400Der Kompositionsmodus ist ungültig und muss aktualisiert werden.
QPaintEngine::DirtyClipEnabled0x0800Ob das Clipping aktiviert ist oder nicht, ist ungültig und muss aktualisiert werden.
QPaintEngine::DirtyOpacity0x1000Die konstante Deckkraft hat sich geändert und muss im Rahmen der Statusänderung in ` QPaintEngine::updateState()` aktualisiert werden.
QPaintEngine::AllDirty0xffffIntern verwendete Hilfs-Enumeration.

Diese Typen werden von ` QPainter ` verwendet, um mithilfe von ` QPaintEngine::updateState()` verzögerte Aktualisierungen der verschiedenen Zustände in der ` QPaintEngine ` auszulösen.

Eine Render-Engine muss jeden geänderten Zustand aktualisieren.

Der Typ „DirtyFlags“ ist ein „typedef“ für „QFlags<DirtyFlag>“. Er speichert eine OR-Kombination von „DirtyFlag“-Werten.

enum QPaintEngine::PaintEngineFeature
flags QPaintEngine::PaintEngineFeatures

Diese Enumeration dient zur Beschreibung der Funktionen oder Fähigkeiten der Paint-Engine. Wenn eine Funktion von der Engine nicht unterstützt wird, versucht „ QPainter “, diese Funktion nach bestem Vermögen auf andere Weise zu emulieren und ein alpha-gemischtes „ QImage “ mit den emulierten Ergebnissen an die Engine weiterzuleiten. Einige Funktionen lassen sich nicht emulieren: „AlphaBlend“ und „PorterDuff“.

KonstanteWertBeschreibung
QPaintEngine::AlphaBlend0x00000080Die Engine kann Primitive mit Alpha-Blending rendern.
QPaintEngine::Antialiasing0x00000400Die Engine kann Antialiasing verwenden, um das Erscheinungsbild gerenderter Primitive zu verbessern.
QPaintEngine::BlendModes0x00008000Die Engine unterstützt Mischmodi.
QPaintEngine::BrushStroke0x00000800Die Engine unterstützt das Zeichnen von Strichen, die Pinsel als Füllungen enthalten, nicht nur Volltonfarben (z. B. eine gestrichelte Verlaufslinie mit einer Breite von 2).
QPaintEngine::ConicalGradientFill0x00000040Die Engine unterstützt konische Farbverlaufsfüllungen.
QPaintEngine::ConstantOpacity0x00001000Die Engine unterstützt die von ` QPainter::setOpacity()` bereitgestellte Funktion.
QPaintEngine::LinearGradientFill0x00000010Die Engine unterstützt lineare Farbverlaufsfüllungen.
QPaintEngine::MaskedBrush0x00002000Die Engine ist in der Lage, Pinsel darzustellen, die eine Textur mit einem Alphakanal oder einer Maske besitzen.
QPaintEngine::ObjectBoundingModeGradients0x00010000Die Engine bietet native Unterstützung für Farbverläufe im Koordinatenmodus „ QGradient::ObjectBoundingMode “. Andernfalls, sofern QPaintEngine::PatternTransform unterstützt wird, werden Farbverläufe im Objektbegrenzungsmodus in Farbverläufe im Koordinatenmodus „ QGradient::LogicalMode “ umgewandelt, wobei eine Pinseltransformation für die Koordinatenabbildung verwendet wird.
QPaintEngine::PainterPaths0x00000200Die Engine unterstützt Pfade.
QPaintEngine::PaintOutsidePaintEvent0x20000000Die Engine ist in der Lage, außerhalb von Malereignissen zu zeichnen.
QPaintEngine::PatternBrush0x00000008Die Engine kann Pinsel mit den in „ Qt::BrushStyle “ angegebenen Pinselmustern rendern.
QPaintEngine::PatternTransform0x00000002Die Engine unterstützt die Transformation von Pinselmustern.
QPaintEngine::PerspectiveTransform0x00004000Die Engine unterstützt die Durchführung von perspektivischen Transformationen an Primitiven.
QPaintEngine::PixmapTransform0x00000004Die Engine kann Pixmaps transformieren, einschließlich Rotation und Scherung.
QPaintEngine::PorterDuff0x00000100Die Engine unterstützt Porter-Duff-Operationen
QPaintEngine::PrimitiveTransform0x00000001Die Engine unterstützt die Transformation von Zeichenprimitiven.
QPaintEngine::RadialGradientFill0x00000020Die Engine unterstützt radiale Farbverlaufsfüllungen.
QPaintEngine::RasterOpModes0x00020000Die Engine unterstützt bitweise Rasteroperationen.
QPaintEngine::AllFeatures0xffffffffAlle oben genannten Funktionen. Dieser Enum-Wert wird üblicherweise als Bitmaske verwendet.

Der Typ „PaintEngineFeatures“ ist ein „typedef“ für „QFlags<PaintEngineFeature>“. Er speichert eine ODER-Kombination von „PaintEngineFeature“-Werten.

enum QPaintEngine::PolygonDrawMode

KonstanteWertBeschreibung
QPaintEngine::OddEvenMode0Das Polygon sollte mit der Füllregel „OddEven“ gezeichnet werden.
QPaintEngine::WindingMode1Das Polygon soll unter Verwendung der Füllregel „Winding“ gezeichnet werden.
QPaintEngine::ConvexMode2Das Polygon ist ein konvexes Polygon und kann, sofern verfügbar, mit speziellen Algorithmen gezeichnet werden.
QPaintEngine::PolylineMode3Es sollte nur der Umriss des Polygons gezeichnet werden.

enum QPaintEngine::Type

KonstanteWertBeschreibung
QPaintEngine::X110 
QPaintEngine::Windows1 
QPaintEngine::MacPrinter4 
QPaintEngine::CoreGraphics3Quartz2D (CoreGraphics) von macOS
QPaintEngine::QuickDraw2QuickDraw von macOS
QPaintEngine::QWindowSystem5Qt für Embedded Linux
QPaintEngine::OpenGL6 
QPaintEngine::Picture7QPicture Format
QPaintEngine::SVG8Scalable Vector Graphics im XML-Format
QPaintEngine::Raster9 
QPaintEngine::Direct3D10Nur Windows, Direct3D-basierte Engine
QPaintEngine::Pdf11Portable Document Format
QPaintEngine::OpenVG12 
QPaintEngine::User50ID des ersten Benutzertyps
QPaintEngine::MaxUser100Letzte Benutzer-Typ-ID
QPaintEngine::OpenGL213 
QPaintEngine::PaintBuffer14 
QPaintEngine::Blitter15 
QPaintEngine::Direct2D16Nur Windows, Direct2D-basierte Engine

Dokumentation zu den Member-Funktionen

[explicit] QPaintEngine::QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())

Erstellt eine Paint-Engine mit den unter caps angegebenen Funktionen.

[virtual noexcept] QPaintEngine::~QPaintEngine()

Zerstört die Farb-Engine.

[pure virtual] bool QPaintEngine::begin(QPaintDevice *pdev)

Implementieren Sie diese Funktion neu, um Ihre Zeichen-Engine zu initialisieren, wenn der Zeichenvorgang auf dem Zeichen-Device pdev beginnen soll. Geben Sie „true“ zurück, wenn die Initialisierung erfolgreich war; andernfalls geben Sie „false“ zurück.

Siehe auch end() und isActive().

[virtual] void QPaintEngine::drawEllipse(const QRectF &rect)

Implementieren Sie diese Funktion neu, um die größte Ellipse zu zeichnen, die in das Rechteck rect passt.

Die Standardimplementierung ruft ` drawPolygon()` auf.

[virtual] void QPaintEngine::drawEllipse(const QRect &rect)

Die Standardimplementierung dieser Funktion ruft die Gleitkomma-Version dieser Funktion auf

Dies ist eine überladene Funktion.

[virtual] void QPaintEngine::drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)

Implementieren Sie diese Funktion neu, um den durch das Rechteck „ sr “ angegebenen Teil von „ image “ im angegebenen „ rectangle “ unter Verwendung der angegebenen Konvertierungsflags „ flags “ zu zeichnen und ihn in eine Pixmap zu konvertieren.

[virtual] void QPaintEngine::drawLines(const QLineF *lines, int lineCount)

Die Standardimplementierung unterteilt die Liste der Zeilen in „ lines “ in „ lineCount “ separate Aufrufe von „ drawPath()“ oder „ drawPolygon()“, je nach Funktionsumfang der Zeichen-Engine.

[virtual] void QPaintEngine::drawLines(const QLine *lines, int lineCount)

Die Standardimplementierung konvertiert die ersten lineCount Zeilen in lines in einen QLineF und ruft die Gleitkomma-Version dieser Funktion auf.

Dies ist eine überladene Funktion.

[virtual] void QPaintEngine::drawPath(const QPainterPath &path)

Die Standardimplementierung ignoriert die Methode „ path “ und führt keine Aktion aus.

[pure virtual] void QPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)

Implementieren Sie diese Funktion neu, um den Teil der „ pm “, der durch das Rechteck „ sr “ angegeben wird, in der angegebenen „ r “ zu zeichnen.

[virtual] void QPaintEngine::drawPoints(const QPoint *points, int pointCount)

Zeichnet die ersten pointCount -Punkte in den Puffer points

Die Standardimplementierung konvertiert die ersten pointCount QPoints in points in QPointFs und ruft die Gleitkomma-Version von drawPoints auf.

[virtual] void QPaintEngine::drawPoints(const QPointF *points, int pointCount)

Zeichnet die ersten pointCount Punkte in den Puffer points

[virtual] void QPaintEngine::drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)

Implementieren Sie diese virtuelle Funktion neu, um das Polygon zu zeichnen, das durch die ersten Punkte von „ pointCount “ in „ points “ definiert ist, unter Verwendung des Modus „ mode “.

Hinweis: Mindestens eine der drawPolygon()-Funktionen muss neu implementiert werden.

[virtual] void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)

Implementieren Sie diese virtuelle Funktion neu, um das Polygon zu zeichnen, das durch die ersten Punkte von ` pointCount ` in ` points` definiert ist, unter Verwendung des Modus ` mode`.

Hinweis: Mindestens eine der drawPolygon()-Funktionen muss neu implementiert werden.

Dies ist eine überladene Funktion.

[virtual] void QPaintEngine::drawRects(const QRectF *rects, int rectCount)

Zeichnet die ersten „ rectCount “-Rechtecke in den Puffer „ rects “. Die Standardimplementierung dieser Funktion ruft je nach Funktionsumfang der Zeichen-Engine entweder „ drawPath()“ oder „ drawPolygon()“ auf.

[virtual] void QPaintEngine::drawRects(const QRect *rects, int rectCount)

Die Standardimplementierung wandelt die ersten rectCount Rechtecke im Puffer rects in ein QRectF um und ruft die Gleitkomma-Version dieser Funktion auf.

Dies ist eine überladene Funktion.

[virtual] void QPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)

Diese Funktion zeichnet das Textelement „ textItem “ an der Position „ p “. Die Standardimplementierung dieser Funktion wandelt den Text in einen „ QPainterPath “ um und zeichnet den resultierenden Pfad.

[virtual] void QPaintEngine::drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)

Implementieren Sie diese Funktion neu, um die „ pixmap “ in der angegebenen „ rect “ zu zeichnen, beginnend bei der angegebenen „ p “. Die Pixmap wird so lange wiederholt gezeichnet, bis die „ rect “ gefüllt ist.

[pure virtual] bool QPaintEngine::end()

Implementieren Sie diese Funktion neu, um das Zeichnen auf dem aktuellen Zeichen-Device abzuschließen. Geben Sie „true“ zurück, wenn das Zeichnen erfolgreich abgeschlossen wurde; andernfalls geben Sie „false“ zurück.

Siehe auch begin() und isActive().

bool QPaintEngine::hasFeature(QPaintEngine::PaintEngineFeatures feature) const

Gibt „ true “ zurück, wenn die Paint-Engine das angegebene „ feature “ unterstützt; andernfalls wird „ false “ zurückgegeben.

bool QPaintEngine::isActive() const

Gibt „ true “ zurück, wenn die Zeichen-Engine gerade zeichnet; andernfalls wird „ false “ zurückgegeben.

Siehe auch setActive().

QPaintDevice *QPaintEngine::paintDevice() const

Gibt das Gerät zurück, auf dem diese Engine gerade zeichnet, sofern das Zeichnen aktiv ist; andernfalls wird „ nullptr “ zurückgegeben.

QPainter *QPaintEngine::painter() const

Gibt den „Painter“ der Paint-Engine zurück.

void QPaintEngine::setActive(bool state)

Setzt den aktiven Status der Paint-Engine auf „ state “.

Siehe auch isActive().

[pure virtual] QPaintEngine::Type QPaintEngine::type() const

Implementieren Sie diese Funktion neu, damit sie den Paint-Engine- Type zurückgibt.

[pure virtual] void QPaintEngine::updateState(const QPaintEngineState &state)

Implementieren Sie diese Funktion neu, um den Zustand einer Paint-Engine zu aktualisieren.

Nach der Implementierung ist diese Funktion dafür zuständig, den aktuellen Zustand der Paint-Engine ( state ) zu überprüfen und die geänderten Eigenschaften zu aktualisieren. Verwenden Sie die Funktion „ QPaintEngineState::state()“, um herauszufinden, welche Eigenschaften aktualisiert werden müssen, und nutzen Sie anschließend die entsprechende Funktion „ get function “, um die aktuellen Werte für die angegebenen Eigenschaften abzurufen.

Siehe auch „ QPaintEngineState “.

© 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.