Класс QGradient
Класс QGradient используется в сочетании с классом QBrush для задания градиентного заливки. Подробнее...
| Заголовок: | #include <QGradient> |
| qmake: | QT += gui |
| Наследуется от: |
Публичные типы
| Перечисление | CoordinateMode { LogicalMode, ObjectMode, StretchToDeviceMode, ObjectBoundingMode } |
| Перечисление | Preset { WarmFlame, NightFade, SpringWarmth, JuicyPeach, ..., PerfectBlue } |
| Перечисление | 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 |
Статические публичные члены
| const QMetaObject | staticMetaObject |
Связанные нечлены
| typedef | QGradientStop |
| typedef | QGradientStops |
Подробное описание
Класс QGradient используется в сочетании с классом QBrush для задания градиентного заливки.
В настоящее время 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); Можно повторить или отразить градиент за пределами его области, указав способ заполнения spread с помощью функции setSpread(). По умолчанию область за пределами области градиента заполняется цветом ближайшей точки останова. Текущий заданный способ заполнения spread можно получить с помощью функции spread(). Перечисление QGradient::Spread определяет три различных способа:
| PadSpread | RepeatSpread | ReflectSpread |
Обратите внимание, что функция setSpread() имеет эффект только для линейных и радиальных градиентов. Причина в том, что конический градиент по определению замкнут, т.е. *конический* градиент заполняет всю окружность от 0 до 360 градусов, в то время как граница радиального или линейного градиента может быть задана через его радиус или конечные точки останова соответственно.
Координаты градиента могут быть заданы в логических координатах, относительно координат устройства или относительно координат ограничивающей рамки объекта. Режим координат coordinate mode можно задать с помощью функции setCoordinateMode(). По умолчанию используется режим LogicalMode, где координаты градиента задаются так же, как и координаты объекта. Чтобы получить текущий режим coordinate mode, используйте функцию coordinateMode().
См. также Пример Gradients и 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
Указывает, как область за пределами области градиента должна быть заполнена.
END_OF_DOCUMENT_MARKER| Константа | Значение | Описание |
|---|---|---|
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, что позволяет применять предустановку к произвольным размерам объекта.
Эта функция была добавлена в 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)
Указывает метод распространения method, который должен быть использован для этого градиента.
Обратите внимание, что эта функция имеет эффект только для линейных и радиальных градиентов.
См. также spread().
void QGradient::setStops(const QGradientStops &stopPoints)
Заменяет текущий набор точек остановки заданными stopPoints. Позиции точек должны быть в диапазоне от 0 до 1 и должны быть отсортированы, начиная с самой низкой.
См. также setColorAt() и stops().
QGradient::Spread QGradient::spread() const
Возвращает метод распространения, используемый этим градиентом. Значение по умолчанию — 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!=().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qgradient.html