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()} {画笔变换}(如果有的话)是相对于逻辑空间而非对象空间应用的。此枚举值已被弃用,不应在新代码中使用。 |
enum QGradient::Preset
此枚举基于https://webgradients.com/ 中的渐变效果,为QGradient 指定了一组预定义预设。
常数 | 值 |
---|---|
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)
使用给定的color 在给定的position 处创建停止点。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!=() 。
© 2025 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.