QGradient Class
QGradient 类需与QBrush 结合使用,以指定渐变填充。更多内容...
| 头文件: | #include <QGradient> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 继承自: |
- 所有成员列表(包括继承的成员)
- QGradient 属于“绘图类”和“隐式共享类”。
公共类型
| enum | CoordinateMode { LogicalMode, ObjectMode, StretchToDeviceMode, ObjectBoundingMode } |
| enum | Preset { WarmFlame, NightFade, SpringWarmth, JuicyPeach, YoungPassion, …, PerfectBlue } |
| enum | Spread { PadSpread, RepeatSpread, ReflectSpread } |
| enum | 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 |
相关的非成员
详细说明
Qt 目前支持三种渐变填充类型:
- 线性渐变在起始点和终点之间进行颜色插值。
- 简单径向渐变会在焦点与围绕该焦点的圆上的端点之间进行颜色插值。
- 扩展径向渐变在中心点与焦点圆之间进行颜色插值。
- 锥形渐变在中心点周围对颜色进行插值。
可通过调用type()函数获取渐变的类型。每种类型都由QGradient的子类表示:
渐变中的颜色通过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 method ,可以使渐变在区域外重复或镜像。默认情况下,外围区域将填充为最近停靠点的颜色。当前设置的spread method 可通过spread()函数获取。QGradient::Spread 枚举定义了三种不同的方法:
请注意,setSpread() 函数仅对线性渐变和径向渐变有效。原因是锥形渐变按定义是闭合的,即锥形渐变填充了 0 到 360 度的整个圆周,而径向或线性渐变的边界则可分别通过其半径或最终停靠点来指定。
渐变坐标可以以逻辑坐标、相对于设备坐标或相对于对象边界框坐标的方式指定。可通过setCoordinateMode()函数设置coordinate mode 。默认值为LogicalMode ,即渐变坐标的指定方式与对象坐标相同。要获取当前设置的coordinate mode ,请使用coordinateMode()。
成员类型文档
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()} {brush transform},则其应用是相对于逻辑空间而非对象空间。此枚举值已弃用,不应在新代码中使用。 |
enum QGradient::Preset
该枚举为QGradient 定义了一组预设,基于https://webgradients.com/中的渐变效果。
| 常量 | 值 |
|---|---|
QGradient::WarmFlame | 1 |
QGradient::NightFade | 2 |
QGradient::SpringWarmth | 3 |
QGradient::JuicyPeach | 4 |
QGradient::YoungPassion | 5 |
QGradient::LadyLips | 6 |
QGradient::SunnyMorning | 7 |
QGradient::RainyAshville | 8 |
QGradient::FrozenDreams | 9 |
QGradient::WinterNeva | 10 |
QGradient::DustyGrass | 11 |
QGradient::TemptingAzure | 12 |
QGradient::HeavyRain | 13 |
QGradient::AmyCrisp | 14 |
QGradient::MeanFruit | 15 |
QGradient::DeepBlue | 16 |
QGradient::RipeMalinka | 17 |
QGradient::CloudyKnoxville | 18 |
QGradient::MalibuBeach | 19 |
QGradient::NewLife | 20 |
QGradient::TrueSunset | 21 |
QGradient::MorpheusDen | 22 |
QGradient::RareWind | 23 |
QGradient::NearMoon | 24 |
QGradient::WildApple | 25 |
QGradient::SaintPetersburg | 26 |
QGradient::PlumPlate | 28 |
QGradient::EverlastingSky | 29 |
QGradient::HappyFisher | 30 |
QGradient::Blessing | 31 |
QGradient::SharpeyeEagle | 32 |
QGradient::LadogaBottom | 33 |
QGradient::LemonGate | 34 |
QGradient::ItmeoBranding | 35 |
QGradient::ZeusMiracle | 36 |
QGradient::OldHat | 37 |
QGradient::StarWine | 38 |
QGradient::HappyAcid | 41 |
QGradient::AwesomePine | 42 |
QGradient::NewYork | 43 |
QGradient::ShyRainbow | 44 |
QGradient::MixedHopes | 46 |
QGradient::FlyHigh | 47 |
QGradient::StrongBliss | 48 |
QGradient::FreshMilk | 49 |
QGradient::SnowAgain | 50 |
QGradient::FebruaryInk | 51 |
QGradient::KindSteel | 52 |
QGradient::SoftGrass | 53 |
QGradient::GrownEarly | 54 |
QGradient::SharpBlues | 55 |
QGradient::ShadyWater | 56 |
QGradient::DirtyBeauty | 57 |
QGradient::GreatWhale | 58 |
QGradient::TeenNotebook | 59 |
QGradient::PoliteRumors | 60 |
QGradient::SweetPeriod | 61 |
QGradient::WideMatrix | 62 |
QGradient::SoftCherish | 63 |
QGradient::RedSalvation | 64 |
QGradient::BurningSpring | 65 |
QGradient::NightParty | 66 |
QGradient::SkyGlider | 67 |
QGradient::HeavenPeach | 68 |
QGradient::PurpleDivision | 69 |
QGradient::AquaSplash | 70 |
QGradient::SpikyNaga | 72 |
QGradient::LoveKiss | 73 |
QGradient::CleanMirror | 75 |
QGradient::PremiumDark | 76 |
QGradient::ColdEvening | 77 |
QGradient::CochitiLake | 78 |
QGradient::SummerGames | 79 |
QGradient::PassionateBed | 80 |
QGradient::MountainRock | 81 |
QGradient::DesertHump | 82 |
QGradient::JungleDay | 83 |
QGradient::PhoenixStart | 84 |
QGradient::OctoberSilence | 85 |
QGradient::FarawayRiver | 86 |
QGradient::AlchemistLab | 87 |
QGradient::OverSun | 88 |
QGradient::PremiumWhite | 89 |
QGradient::MarsParty | 90 |
QGradient::EternalConstance | 91 |
QGradient::JapanBlush | 92 |
QGradient::SmilingRain | 93 |
QGradient::CloudyApple | 94 |
QGradient::BigMango | 95 |
QGradient::HealthyWater | 96 |
QGradient::AmourAmour | 97 |
QGradient::RiskyConcrete | 98 |
QGradient::StrongStick | 99 |
QGradient::ViciousStance | 100 |
QGradient::PaloAlto | 101 |
QGradient::HappyMemories | 102 |
QGradient::MidnightBloom | 103 |
QGradient::Crystalline | 104 |
QGradient::PartyBliss | 106 |
QGradient::ConfidentCloud | 107 |
QGradient::LeCocktail | 108 |
QGradient::RiverCity | 109 |
QGradient::FrozenBerry | 110 |
QGradient::ChildCare | 112 |
QGradient::FlyingLemon | 113 |
QGradient::NewRetrowave | 114 |
QGradient::HiddenJaguar | 115 |
QGradient::AboveTheSky | 116 |
QGradient::Nega | 117 |
QGradient::DenseWater | 118 |
QGradient::Seashore | 120 |
QGradient::MarbleWall | 121 |
QGradient::CheerfulCaramel | 122 |
QGradient::NightSky | 123 |
QGradient::MagicLake | 124 |
QGradient::YoungGrass | 125 |
QGradient::ColorfulPeach | 126 |
QGradient::GentleCare | 127 |
QGradient::PlumBath | 128 |
QGradient::HappyUnicorn | 129 |
QGradient::AfricanField | 131 |
QGradient::SolidStone | 132 |
QGradient::OrangeJuice | 133 |
QGradient::GlassWater | 134 |
QGradient::NorthMiracle | 136 |
QGradient::FruitBlend | 137 |
QGradient::MillenniumPine | 138 |
QGradient::HighFlight | 139 |
QGradient::MoleHall | 140 |
QGradient::SpaceShift | 142 |
QGradient::ForestInei | 143 |
QGradient::RoyalGarden | 144 |
QGradient::RichMetal | 145 |
QGradient::JuicyCake | 146 |
QGradient::SmartIndigo | 147 |
QGradient::SandStrike | 148 |
QGradient::NorseBeauty | 149 |
QGradient::AquaGuidance | 150 |
QGradient::SunVeggie | 151 |
QGradient::SeaLord | 152 |
QGradient::BlackSea | 153 |
QGradient::GrassShampoo | 154 |
QGradient::LandingAircraft | 155 |
QGradient::WitchDance | 156 |
QGradient::SleeplessNight | 157 |
QGradient::AngelCare | 158 |
QGradient::CrystalRiver | 159 |
QGradient::SoftLipstick | 160 |
QGradient::SaltMountain | 161 |
QGradient::PerfectWhite | 162 |
QGradient::FreshOasis | 163 |
QGradient::StrictNovember | 164 |
QGradient::MorningSalad | 165 |
QGradient::DeepRelief | 166 |
QGradient::SeaStrike | 167 |
QGradient::NightCall | 168 |
QGradient::SupremeSky | 169 |
QGradient::LightBlue | 170 |
QGradient::MindCrawl | 171 |
QGradient::LilyMeadow | 172 |
QGradient::SugarLollipop | 173 |
QGradient::SweetDessert | 174 |
QGradient::MagicRay | 175 |
QGradient::TeenParty | 176 |
QGradient::FrozenHeat | 177 |
QGradient::GagarinView | 178 |
QGradient::FabledSunset | 179 |
QGradient::PerfectBlue | 180 |
enum QGradient::Spread
指定渐变区域外的区域应如何填充。
| 常量 | 值 | 描述 |
|---|---|---|
QGradient::PadSpread | 0 | 该区域将填充为最接近的色停颜色。这是默认设置。 |
QGradient::RepeatSpread | 2 | 渐变将在渐变区域之外重复。 |
QGradient::ReflectSpread | 1 | 渐变在渐变区域外进行镜像。 |
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 ,因此该预设可应用于任意大小的对象。
QGradient::CoordinateMode QGradient::coordinateMode() const
返回此渐变的坐标模式。默认模式为LogicalMode 。
另请参阅 setCoordinateMode()。
void QGradient::setColorAt(qreal position, const QColor &color)
在指定的position 处,使用指定的color 创建一个停点。指定的position 必须在0到1之间。
void QGradient::setCoordinateMode(QGradient::CoordinateMode mode)
将此渐变的坐标模式设置为mode 。默认模式为LogicalMode 。
另请参阅 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
如果该梯度与其他指定的gradient 相同,则返回true ;否则返回false 。
另请参阅 operator==()。
bool QGradient::operator==(const QGradient &gradient) const
如果该梯度与指定的其他gradient 相同,则返回true ;否则返回false 。
另请参阅 operator!=()。
相关的非成员
QGradientStop
std::pair<qreal,QColor> 的 typedef。
QGradientStops
QList 的typedef定义 <QGradientStop>。
© 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.





