On this page

QCGradient Class

QCGradient is the base class for all QCPainter gradient brushes. More...

Header: #include <QCGradient>
CMake: find_package(Qt6 REQUIRED COMPONENTS CanvasPainter)
target_link_libraries(mytarget PRIVATE Qt6::CanvasPainter)
Since: Qt 6.11
Inherits: QCBrush
Inherited By:

QCBoxGradient, QCConicalGradient, QCLinearGradient, and QCRadialGradient

Status: Technical Preview

Public Functions

QColor endColor() const
void setColorAt(float position, const QColor &color)
void setEndColor(const QColor &color)
void setStartColor(const QColor &color)
void setStops(const QCGradientStops &stops)
QColor startColor() const
QCGradientStops stops() const
QCBrush::BrushType type() const
QVariant operator QVariant() const
bool operator!=(const QCGradient &gradient) const
bool operator==(const QCGradient &gradient) const
QCGradientStop
QCGradientStops
QDataStream &operator<<(QDataStream &stream, const QCGradient &gradient)
QDataStream &operator>>(QDataStream &stream, QCGradient &gradient)

Detailed Description

QCGradient is the base class for all QCPainter gradient brushes. Currently there are four type of gradients: QCLinearGradient, QCRadialGradient, QCConicalGradient and QCBoxGradient.

If no stops are provided with setStartColor, setEndColor, setColorAt or setStops, the gragient is rendered as start color white (255,255,255) and end color transparent (0,0,0,0). If only a single stop is provided, the gradient is filled with this color.

QCPainter uses two different approaches for painting gradients.

  • With maximum of 2 stops, the colors are passed into shader as 2 vec4 uniforms. This makes animating 2 stop gradients very performant, with no extra steps in between.
  • With more than 2 stops, the colors are passed into shader as a one dimensional texture. By default the texture size is 1x256 pixels, optimized for quality and performance. The textures are cached, so when gradient stops or colors don't change, previous texture can be reused even when other gradient properties (like position, angle etc.) change. Although animating multi-stop gradients is fast, it will cause texture uploads, so consider if it is worth it.

There are few environment variables to control the gradients texture usage:

  • QCPAINTER_DISABLE_TEXTURE_USAGE_TRACKING - By default, gradient texture usage is tracked and kept under the max amount. Set this environment variable to disable the tracking and keep all gradient textures in memory.
  • QCPAINTER_MAX_TEXTURES - By default, the maximum amount of textures is 1024. Set this environt variable to contain number of desired maximum texture amount. The currently unused temporary gradient textures are automatically removed when the maximum amount is reached.

    Note: This does not have an effect when the texture usage tracking has been disabled.

Member Function Documentation

QColor QCGradient::endColor() const

Returns the gradient end color or the color at the largest position. If the end color has not been set, returns the default end color transparent black (0, 0, 0, 0).

See also setEndColor().

void QCGradient::setColorAt(float position, const QColor &color)

Creates a stop point at the given position with the given color. The given position must be in the range 0 to 1.

See also setStops() and stops().

void QCGradient::setEndColor(const QColor &color)

Sets the end color of gradient to color. This is equal to calling setColorAt() with position 1.

See also endColor().

void QCGradient::setStartColor(const QColor &color)

Sets the start color of gradient to color. This is equal to calling setColorAt() with position 0.

See also startColor().

void QCGradient::setStops(const QCGradientStops &stops)

Replaces the current set of stop points with the given stops.

The rules for the stops list are following:

  • The list should contain at least 2 stops.
  • The positions of the stops must be in the range 0 to 1, and must be sorted with the lowest stops first.
  • The first position must be at 0.0 and the last position at 1.0.

See also setColorAt() and stops().

QColor QCGradient::startColor() const

Returns the gradient start color or the color at the smallest position. If the start color has not been set, returns the default start color white (255, 255, 255).

See also setStartColor().

QCGradientStops QCGradient::stops() const

Returns the stop points for this gradient.

See also setStops() and setColorAt().

QCBrush::BrushType QCGradient::type() const

Returns the type of gradient.

QVariant QCGradient::operator QVariant() const

Returns the gradient as a QVariant.

bool QCGradient::operator!=(const QCGradient &gradient) const

Returns true if the gradient is different from the given gradient; otherwise false.

See also operator==().

bool QCGradient::operator==(const QCGradient &gradient) const

Returns true if the gradient is equal to the given gradient; otherwise false.

See also operator!=().

Related Non-Members

QCGradientStop

Typedef for std::pair<float, QColor>.

QCGradientStops

Typedef for QList<QCGradientStop>.

QDataStream &operator<<(QDataStream &stream, const QCGradient &gradient)

Writes the given gradient to the given stream and returns a reference to the stream.

See also Serializing Qt Data Types.

QDataStream &operator>>(QDataStream &stream, QCGradient &gradient)

Reads the given gradient from the given stream and returns a reference to the stream.

See also Serializing Qt Data Types.

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