Класс QGradient
Класс QGradient используется совместно с QBrush для задания градиентных заливок. Подробнее...
| Заголовок: | #include <QGradient> |
| qmake: | QT += gui |
| Наследуется от: |
Публичные типы
| Перечисление | CoordinateMode { LogicalMode, ObjectMode, StretchToDeviceMode, ObjectBoundingMode } |
| Перечисление | Preset { WarmFlame, NightFade, SpringWarmth, JuicyPeach, YoungPassion, …, NumPresets } |
| Перечисление | Spread { PadSpread, RepeatSpread, ReflectSpread } |
| Перечисление | Type { LinearGradient, RadialGradient, ConicalGradient, NoGradient } |
Публичные функции
| QGradient(QGradient::Preset preset) | |
| QGradient::CoordinateMode | coordinateMode() const |
| void | setColorAt(qreal position, const QColor &color) |
| void | setCoordinateMode(QGradient::CoordinateMode mode) |
| void | setSpread(QGradient::Spread method) |
| void | setStops(const QGradientStops &stopPoints) |
| QGradient::Spread | spread() const |
| QGradientStops | stops() const |
| QGradient::Type | type() const |
| bool | operator!=(const QGradient &gradient) const |
| bool | operator==(const QGradient &gradient) const |
Связанные нечлены
| Тип | QGradientStop |
| Тип | QGradientStops |
Подробное описание
В Qt в настоящее время поддерживаются три типа градиентных заливок:
- Линейные градиенты интерполируют цвета между начальной и конечной точками.
- Радиальные градиенты интерполируют цвета между фокусной точкой и конечными точками по окружности вокруг неё.
- Расширенные радиальные градиенты интерполируют цвета между центром и фокусной окружностью.
- Конические градиенты интерполируют цвета вокруг центральной точки.
Тип градиента можно получить, используя функцию type(). Каждый из типов представлен подклассом QGradient:
| QLinearGradient | QRadialGradient | QConicalGradient |
|---|---|---|
Цвета в градиенте определяются с помощью точек останова типа QGradientStop; т. е. позиции и цвета. Для определения отдельной точки останова используйте функцию setColorAt(). В качестве альтернативы, используйте функцию setStops() для определения нескольких точек останова за один раз. Обратите внимание, что последняя функция заменяет текущий набор точек останова.
Полный набор точек останова градиента (доступный через функцию stops() ) определяет, как должна заполняться область градиента. Если точки останова не указаны, используется градиент от чёрного в 0 до белого в 1.
Диагональный линейный градиент от чёрного в (100, 100) до белого в (200, 200) можно задать так:
QLinearGradient linearGrad(QPointF(100, 100), QPointF(200, 200));
linearGrad.setColorAt(0, Qt::black);
linearGrad.setColorAt(1, Qt::white); Градиент может иметь любое количество точек останова. Следующий пример создаёт радиальный градиент, начинающийся с красного в центре, затем синего и зелёного на краях:
QRadialGradient radialGrad(QPointF(100, 100), 100);
radialGrad.setColorAt(0, Qt::red);
radialGrad.setColorAt(0.5, Qt::blue);
radialGrad.setColorAt(1, Qt::green); Можно повторять или отражать градиент за пределами своей области, задав метод распространения с помощью функции setSpread(). По умолчанию внешняя область заполняется цветом ближайшей точки останова. Текущий метод распространения можно получить, используя функцию spread(). Перечисление QGradient::Spread определяет три различных метода:
| PadSpread | RepeatSpread | ReflectSpread |
Обратите внимание, что функция setSpread() имеет эффект только для линейных и радиальных градиентов. Причина в том, что конический градиент по определению замкнут, т. е. конический градиент заполняет всю окружность от 0 до 360 градусов, в то время как границы радиального или линейного градиента могут быть указаны через радиус или конечные точки останова соответственно.
Координаты градиента могут быть заданы в логических координатах, координатах устройства или координатах ограничивающей рамки объекта. Режим координат можно задать с помощью функции setCoordinateMode(). По умолчанию используется режим LogicalMode, где координаты градиента задаются так же, как и координаты объекта. Чтобы получить текущий режим координат, используйте coordinateMode().
См. также Пример Градиенты и QBrush.
Документация по типам членов
enum QGradient::CoordinateMode
Это перечисление определяет, как координаты градиента отображаются на устройстве рисования, на котором используется градиент.
| Постоянная | Значение | Описание |
|---|---|---|
QGradient::LogicalMode |
0 |
Это режим по умолчанию. Координаты градиента задаются в логическом пространстве, точно так же, как и координаты объекта. |
QGradient::ObjectMode |
3 |
В этом режиме координаты градиента относительны к прямоугольнику ограничивающей рамки рисуемого объекта, с (0,0) в левом верхнем углу и (1,1) в правом нижнем углу прямоугольника ограничивающей рамки объекта. Это значение было добавлено в Qt 5.12. |
QGradient::StretchToDeviceMode |
1 |
В этом режиме координаты градиента относительны к прямоугольнику ограничивающей рамки устройства рисования, с (0,0) в левом верхнем углу и (1,1) в правом нижнем углу прямоугольника ограничивающей рамки устройства рисования. |
QGradient::ObjectBoundingMode |
2 |
Этот режим аналогичен ObjectMode, за исключением того, что {QBrush::transform()} {преобразование кисти}, если таковое имеется, применяется относительно логического пространства, а не пространства объекта. Это значение перечисления устарело и не должно использоваться в новом коде. |
Это перечисление было введено или изменено в Qt 4.4.
enum QGradient::Preset
Это перечисление определяет набор предопределённых пресетов для QGradient, основанных на градиентах с https://webgradients.com/.
Это перечисление было введено или изменено в Qt 5.12.
enum QGradient::Spread
Определяет, как должна заполняться область за пределами области градиента.
| Постоянная | Значение | Описание |
|---|---|---|
QGradient::PadSpread |
0 |
Область заполняется цветом ближайшей точки останова. Это значение по умолчанию. |
QGradient::RepeatSpread |
2 |
Градиент повторяется за пределами области градиента. |
QGradient::ReflectSpread |
1 |
Градиент отражается за пределами области градиента. |
См. также spread() и setSpread().
enum QGradient::Type
Определяет тип градиента.
| Константа | Значение | Описание |
|---|---|---|
QGradient::LinearGradient |
0 |
Интерполирует цвета между начальной и конечной точками (QLinearGradient). |
QGradient::RadialGradient |
1 |
Интерполирует цвета между фокусной точкой и конечными точками по окружности, окружающей её (QRadialGradient). |
QGradient::ConicalGradient |
2 |
Интерполирует цвета вокруг центральной точки (QConicalGradient). |
QGradient::NoGradient |
3 |
Градиент не используется. |
См. также type().
Документация функций-членов
QGradient::QGradient(QGradient::Preset preset)
Создаёт градиент на основе предопределённого preset.
Режим координат полученного градиента — QGradient::ObjectMode, позволяющий применять preset к произвольным размерам объектов.
Эта функция была добавлена в Qt 5.12.
QGradient::CoordinateMode QGradient::coordinateMode() const
Возвращает режим координат этого градиента. По умолчанию режим — LogicalMode.
Эта функция была добавлена в Qt 4.4.
См. также setCoordinateMode().
void QGradient::setColorAt(qreal position, const QColor &color)
Создаёт точку останова в заданном position с заданным color. Указанное position должно быть в диапазоне от 0 до 1.
См. также setStops() и stops().
void QGradient::setCoordinateMode(QGradient::CoordinateMode mode)
Устанавливает режим координат этого градиента в mode. По умолчанию режим — LogicalMode.
Эта функция была добавлена в Qt 4.4.
См. также coordinateMode().
void QGradient::setSpread(QGradient::Spread method)
Определяет метод spread, который следует использовать для этого градиента.
Обратите внимание, что эта функция имеет эффект только для линейных и радиальных градиентов.
См. также spread().
void QGradient::setStops(const QGradientStops &stopPoints)
Заменяет текущий набор точек останова заданными stopPoints. Позиции точек должны находиться в диапазоне от 0 до 1 и быть отсортированы по возрастанию.
См. также setColorAt() и stops().
QGradient::Spread QGradient::spread() const
Возвращает метод spread, используемый этим градиентом. По умолчанию — PadSpread.
См. также setSpread().
QGradientStops QGradient::stops() const
Возвращает точки останова для этого градиента.
Если точки останова не указаны, используется градиент от чёрного в 0 до белого в 1.
См. также setStops() и setColorAt().
QGradient::Type QGradient::type() const
Возвращает тип градиента.
bool QGradient::operator!=(const QGradient &gradient) const
Возвращает true , если градиент совпадает с указанным gradient; в противном случае возвращает false.
Эта функция была добавлена в Qt 4.2.
См. также operator==().
bool QGradient::operator==(const QGradient &gradient) const
Возвращает true , если градиент совпадает с указанным gradient; в противном случае возвращает false.
См. также operator!=().
Связанные внешние функции
typedef QGradientStop
Тип-синоним для QPair<qreal, QColor>.
typedef QGradientStops
Тип-синоним для QVector<QGradientStop>.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qgradient.html