|  | Home · All Classes · All Functions · Overviews

# The Paint System

Qt's paint system enables painting on screen and print devices using the same API, and is primarily based on the QPainter, QPaintDevice, and QPaintEngine classes.

QPainter is used to perform drawing operations, QPaintDevice is an abstraction of a two-dimensional space that can be painted on using a QPainter, and QPaintEngine provides the interface that the painter uses to draw onto different types of devices. The QPaintEngine class is used internally by QPainter and QPaintDevice, and is hidden from application programmers unless they create their own device type.

The main benefit of this approach is that all painting follows the same painting pipeline making it easy to add support for new features and providing default implementations for unsupported ones.

## Topics

- Classes for Painting
- Paint Devices and Backends
- Drawing and Filling
- The Coordinate System
- Reading and Writing Image Files
- Styling
- Printing with Qt

## Classes for Painting

These classes provide support for painting onto a paint device.

QBitmap | Monochrome (1-bit depth) pixmaps
QBrush | Defines the fill pattern of shapes drawn by QPainter
QColor | Colors based on RGB, HSV or CMYK values
QColormap | Maps device independent QColors to device dependent pixel values
QConicalGradient | Used in combination with QBrush to specify a conical gradient brush
QDirectPainter | Direct access to the underlying hardware in Qt for Embedded Linux
QFont | Specifies a font used for drawing text
QFontMetrics | Font metrics information
QFontMetricsF | Font metrics information
QGenericMatrix | Template class that represents a NxM transformation matrix with N columns and M rows
QGradient | Used in combination with QBrush to specify gradient fills
QIcon | Scalable icons in different modes and states
QIconEngine | Abstract base class for QIcon renderers
QIconEngineV2 | Abstract base class for QIcon renderers
QImage | Hardware-independent image representation that allows direct access to the pixel data, and can be used as a paint device
QImageReader | Format independent interface for reading images from files or other devices
QImageWriter | Format independent interface for writing images to files or other devices
QLine | Two-dimensional vector using integer precision
QLineF | Two-dimensional vector using floating point precision
QLinearGradient | Used in combination with QBrush to specify a linear gradient brush
QMargins | Defines the four margins of a rectangle
QMovie | Convenience class for playing movies with QImageReader
QPaintDevice | The base class of objects that can be painted
QPaintEngine | Abstract definition of how QPainter draws to a given device on a given platform
QPainter | Performs low-level painting on widgets and other paint devices
QPainterPath | Container for painting operations, enabling graphical shapes to be constructed and reused
QPainterPathStroker | Used to generate fillable outlines for a given painter path
QPalette | Contains color groups for each widget state
QPen | Defines how a QPainter should draw lines and outlines of shapes
QPicture | Paint device that records and replays QPainter commands
QPixmap | Off-screen image representation that can be used as a paint device
QPixmapCache | Application-wide cache for pixmaps
QPoint | Defines a point in the plane using integer precision
QPointF | Defines a point in the plane using floating point precision
QPolygon | Vector of points using integer precision
QPolygonF | Vector of points using floating point precision
QRadialGradient | Used in combination with QBrush to specify a radial gradient brush
QRect | Defines a rectangle in the plane using integer precision
QRectF | Defines a rectangle in the plane using floating point precision
QRegion | Specifies a clip region for a painter
QSize | Defines the size of a two-dimensional object using integer point precision
QSizeF | Defines the size of a two-dimensional object using floating point precision
QStylePainter | Convenience class for drawing QStyle elements inside a widget
QSvgGenerator | Paint device that is used to create SVG drawings
QSvgRenderer | Used to draw the contents of SVG files onto paint devices
QSvgWidget | Widget that is used to display the contents of Scalable Vector Graphics (SVG) files
QTransform | Specifies 2D transformations of a coordinate system
QVector2D | Represents a vector or vertex in 2D space

Alternatively, Qt provides the QtOpenGL module, offering classes that makes it easy to use OpenGL in Qt applications. Among others, the module provides an OpenGL widget class that can be used just like any other Qt widget, except that it opens an OpenGL display buffer where the OpenGL API can be used to render the contents.