QColor 类
QColor 类提供基于 RGB、HSV 或 CMYK 值的颜色。 更多...
头文件 | #include <QColor> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
- 包括所有成员列表,包括继承成员
- 已弃用成员
- QColor 是 绘图类 的一部分。
公共类型
枚举 | NameFormat { HexRgb, HexArgb } |
枚举 | Spec { Rgb, Hsv, Cmyk, Hsl, ExtendedRgb, Invalid } |
公共函数
QColor() | |
QColor(Qt::GlobalColor color) | |
QColor(int r, int g, int b, int a = 255) | |
QColor(QRgb color) | |
QColor(QRgba64 rgba64) | |
QColor(const QString &name) | |
QColor(const char *name) | |
QColor(QLatin1StringView name) | |
int | alpha() const |
float | alphaF() const |
int | black() const |
float | blackF() const |
int | blue() const |
float | blueF() const |
QColor | convertTo(QColor::Spec colorSpec) const |
int | cyan() const |
float | cyanF() const |
QColor | darker(int factor = 200) const |
void | getCmyk(int *c, int *m, int *y, int *k, int *a = nullptr) const |
void | getCmykF(float *c, float *m, float *y, float *k, float *a = nullptr) const |
void | getHsl(int *h, int *s, int *l, int *a = nullptr) const |
void | getHslF(float *h, float *s, float *l, float *a = nullptr) const |
void | getHsv(int *h, int *s, int *v, int *a = nullptr) const |
void | getHsvF(float *h, float *s, float *v, float *a = nullptr) const |
void | getRgb(int *r, int *g, int *b, int *a = nullptr) const |
void | getRgbF(float *r, float *g, float *b, float *a = nullptr) const |
int | green() const |
float | greenF() const |
int | hslHue() const |
float | hslHueF() const |
int | hslSaturation() const |
float | hslSaturationF() const |
int | hsvHue() const |
float | hsvHueF() const |
int | hsvSaturation() const |
float | hsvSaturationF() const |
int | hue() const |
float | hueF() const |
bool | isValid() const |
QColor | lighter(int factor = 150) const |
int | lightness() const |
float | lightnessF() const |
int | magenta() const |
float | magentaF() const |
QString | name(QColor::NameFormat format = HexRgb) const |
int | red() const |
float | redF() const |
QRgb | rgb() const |
QRgba64 | rgba64() const |
QRgb | rgba() const |
int | saturation() const |
float | saturationF() const |
void | setAlpha(int alpha) |
void | setAlphaF(float alpha) |
void | setBlue(int blue) |
void | setBlueF(float blue) |
void | setCmyk(int c, int m, int y, int k, int a = 255) |
void | setCmykF(float c, float m, float y, float k, float a = 1.0) |
void | setGreen(int green) |
void | setGreenF(float green) |
void | setHsl(int h, int s, int l, int a = 255) |
void | setHslF(float h, float s, float l, float a = 1.0) |
void | setHsv(int h, int , int v, int a = 255) |
void | setHsvF(float h, float s, float v, float a = 1.0) |
void | setRed(int red) |
void | setRedF(float red) |
void | setRgb(int r, int g, int b, int a = 255) |
void | setRgb(QRgb rgb) |
void | setRgba64(QRgba64 rgba) |
void | setRgbF(float , float g, float b, float a = 1.0) |
void | setRgba(QRgb rgba) |
QColor::Spec | spec() const |
QColor | toCmyk() const |
QColor | toExtendedRgb() const |
QColor | toHsl() const |
QColor | toHsv() const |
QColor | toRgb() const |
int | value() const |
float | valueF() const |
int | yellow() const |
float | yellowF() const |
QVariant | operator QVariant() const |
bool | operator!=(const QColor &color) const |
QColor & | operator=(Qt::GlobalColor color) |
bool | operator==(const QColor &color) const |
静态公共成员
QStringList | colorNames() |
QColor | fromCmyk(int c, int m, int y, int k, int a = 255) |
QColor | fromCmykF(float c, float m, float y, float k, float a = 1.0) |
QColor | fromHsl(int h, int s, int l, int a = 255) |
QColor | fromHslF(float h, float s, float l, float a = 1.0) |
QColor | fromHsv(int h, int s, int v, int a = 255) |
QColor | fromHsvF(float h, float s, float v, float a = 1.0) |
QColor | fromRgb(QRgb rgb) |
QColor | fromRgb(int r, int g, int b, int a = 255) |
QColor | fromRgba64(ushort r, ushort g, ushort b, ushort a = USHRT_MAX) |
QColor | fromRgba64(QRgba64 rgba64) |
QColor | fromRgbF(float r, float g, float b, float a = 1.0) |
QColor | fromRgba(QRgb rgba) |
(since 6.4) QColor | fromString(QAnyStringView name) |
(since 6.4) bool | isValidColorName(QAnyStringView name) |
相关非成员
QRgb | |
int | qAlpha(QRgb rgba) |
uint | qAlpha(QRgba64 rgba64) |
int | qBlue(QRgb rgb) |
uint | qBlue(QRgba64 rgba64) |
int | qGray(int r, int g, int b) |
int | qGray(QRgb rgb) |
int | qGreen(QRgb rgb) |
uint | qGreen(QRgba64 rgba64) |
QRgb | qPremultiply(QRgb rgb) |
QRgba64 | qPremultiply(QRgba64 rgba64) |
int | qRed(QRgb rgb) |
uint | qRed(QRgba64 rgba64) |
QRgb | qRgb(int r, int g, int b) |
QRgba64 | qRgba64(quint16 r, quint16 g, quint16 b, quint16 a) |
QRgba64 | qRgba64(quint64 c) |
QRgb | qRgba(int r, int g, int b, int a) |
QRgb | qUnpremultiply(QRgb rgb) |
QRgba64 | qUnpremultiply(QRgba64 rgba64) |
QDataStream & | operator<<(QDataStream &stream, const QColor &color) |
QDataStream & | operator>>(QDataStream &stream, QColor &color) |
详细描述
颜色通常根据 RGB(红色、绿色和蓝色)组件来指定,但也可以根据 HSV(色调、饱和度和值)和 CMYK(青色、品红色、黄色和黑色)组件来指定。此外,还可以使用颜色名称来指定颜色。颜色名称可以是 SVG 1.0 的任何颜色名称。
RGB | HSV | CMYK |
---|---|---|
QColor 构造函数根据 RGB 值创建颜色。要基于 HSV 或 CMYK 值创建 QColor,请分别使用 toHsv() 和 toCmyk() 函数。这些函数返回使用所需格式的颜色副本。此外,静态的 fromRgb()、fromHsv() 和 fromCmyk() 函数可以根据指定的值创建颜色。或者,可以使用 convertTo() 函数(返回所需格式的颜色副本)或将颜色转换为三种格式之一,或者使用任何 setRgb()、setHsv() 和 setCmyk() 函数更改 此 颜色的格式。spec() 函数描述了颜色的指定方式。
可以通过将 RGB 字符串(如 “#112233”)、ARGB 字符串(如 “#ff112233”)或颜色名称(如 “蓝色”)传递给 fromString() 函数来设置颜色。颜色名称取自 SVG 1.0 颜色名称。name() 函数以 “#RRGGBB” 格式返回颜色的名称。也可以使用 setRgb()、setHsv() 和 setCmyk() 来设置颜色。要获取更亮或更暗的颜色,可以使用 lighter() 和 darker() 函数分别。
isValid() 函数指示 QColor 是否在所有情况下都是合法的。例如,RGB 值超出范围的 RGB 颜色是不合法的。出于性能考虑,QColor 通常忽略非法颜色,因此使用无效颜色所产生的结果是没有定义的。
可以使用如 red()、hue() 和 cyan() 这样的函数分别检索颜色组件。也可以使用 getRgb()、getHsv() 和 getCmyk() 函数一次性获取颜色组件的值。使用 RGB 颜色模型,还可以使用 rgb() 访问颜色组件。
存在几个相关的非成员函数:QRgb 是一个表示 RGB 值三元组(r、g、b)的无符号整数的类型定义。请注意,它还可以存储 alpha 通道的值(有关更多信息,请参阅 Alpha-Blended Drawing 部分)。qRed()、qBlue() 和 qGreen() 函数分别返回给定的 QRgb 值的相应组件,而 qRgb() 和 qRgba() 函数基于给定的组件值创建并返回 QRgb 三元组。最后,qAlpha() 函数返回提供的 QRgb 的 alpha 组件,而 qGray() 函数基于给定的值计算并返回一个灰度值。
QColor 是与平台和设备无关的。QColormap 类将颜色映射到硬件。
有关绘画的一般信息,请参阅 Paint System 文档。
整型与浮点精度
QColor 支持 floating point 精度并提供所有颜色组件的 floating point 版本函数,例如 getRgbF(),hueF() 和 fromCmykF()。注意,由于组件使用 16 位整数存储,因此使用,例如,setRgbF() 设置的值与 getRgbF() 函数返回的值之间可能存在微小的偏差,这是由于四舍五入的原因。
虽然基于整数的函数取值范围是 0-255(除 hue() 以外,其值必须在 0-359 范围内),但浮点函数接受 0.0 - 1.0 范围内的值。
Alpha 混合绘图
QColor 还支持 Alpha 混合轮廓和填充。颜色的 Alpha 通道指定透明效果,0 表示完全透明的颜色,而 255 表示完全不透明的颜色。例如
// Specify semi-transparent red painter.setBrush(QColor(255, 0, 0, 127)); painter.drawRect(0, 0, width() / 2, height()); // Specify semi-transparent blue painter.setBrush(QColor(0, 0, 255, 127)); painter.drawRect(0, 0, width(), height() / 2);
上面的代码产生以下输出
如果 alpha 通道的值是整数,则可以使用 alpha() 和 setAlpha() 函数检索和设置颜色的 alpha 通道;如果其值是 float,则使用 alphaF() 和 setAlphaF()。默认情况下,alpha 通道设置为 255(不透明)。要一次性检索和设置所有 RGB 颜色组件(包括 alpha 通道),请使用 rgba() 和 setRgba() 函数。
预定义颜色
在 QColorConstants
命名空间中有 20 个预定义的 QColor 对象,包括黑色、白色、主要和次要颜色,这些颜色的较深版本以及三种灰色阴影。此外,QColorConstants::Svg
命名空间为标准 SVG 颜色关键字名称 定义了 QColor 对象。
用于特殊目的的 QColorConstants::Color0
,QColorConstants::Color1
和 QColorConstants::Transparent
颜色。
QColorConstants::Color0
(零像素值)和 QColorConstants::Color1
(非零像素值)是用于在 QBitmap 中绘制的特殊颜色。使用 QColorConstants::Color0
绘制设置位图为 0(透明;即背景),而使用 c{QColorConstants::Color1} 绘制设置位图为 1(不透明;即前景)。
QColorConstants::Transparent
用于指示透明像素。当使用此值绘图时,将使用适合所使用的底层像素格式的适当像素值。
出于历史原因,20 个预定义颜色也存在于 Qt::GlobalColor 枚举中。
最后,QColor 识别各种颜色名称(作为字符串);静态 colorNames() 函数返回 QColor 知道的颜色名称 QStringList。
扩展 RGB 颜色模型
扩展 RGB 颜色模型,也称为 scRGB 颜色空间,与 RGB 颜色模型相同,但它允许小于 0.0 和大于 1.0 的值。这使得可以表示原本在 RGB 颜色空间之外的但仍在 RGB 颜色空间内部使用相同值的颜色。
HSV 颜色模型
RGB颜色模型面向硬件。其表示方式接近大多数显示器显示的颜色。相比之下,HSV颜色模型在表示颜色方面更符合人类对颜色的感知。例如,“更强”,“更暗”和“相对”这些关系在HSV中易于表达,但在RGB中则难以表达。
HSV,类似于RGB,有三个组件
- H,代表色调,如果颜色是彩色(非灰色),则范围为0到359,如果是灰色则无意义。它代表大多数人心目中熟悉的色彩轮上的程度。红色是0(度),绿色是120,蓝色是240。
- S,代表饱和度,范围为0到255,其值越大,颜色越强。带灰度的颜色饱和度接近0;非常强烈的颜色饱和度接近255。
- V,代表亮度,范围为0到255,代表颜色的明暗程度。0是黑色;255是从黑色可能的距离最远的地方。
以下是一些示例:纯红为H=0,S=255,V=255;向洋红色微微倾斜的深红色可以是H=350(相当于-10),S=255,V=180;带灰度的浅红色可能有H约为0(例如350-359或0-10),S约为50-100,V为255。
Qt为无彩色返回一个色调值为-1。如果您传入过大的色调值,Qt将其强制进入范围。色调360或720被视为0;色调540被视为180。
除了标准的HSV模型外,Qt还提供alpha通道以支持alpha混合绘图。
HSB颜色模型
HSB与HSV相似,然而在HSV中使用的Value参数,HSB指定一个亮度参数,其对颜色的亮度映射有所不同。
同样,对于相同的颜色,HSB的饱和度值通常不等于HSV的饱和度值。《hslSaturation()》提供颜色的HSB饱和度值,而《saturation()》和《hsvSaturation()》提供颜色的HSV饱和度值。
色调值在HSB和HSV中定义相同。
CMYK颜色模型
虽然RGB和HSV颜色模型用于计算机显示器上的显示,但CMYK模型用于印刷机和某些硬拷贝设备的四色印刷过程。
CMYK有四个组件,都在0-255的范围内:青色(C)、品红色(M)、黄色(Y)和黑色(K)。青色、品红和黄色被称为减色;CMYK颜色模型通过以白色表面开始并在其后应用相应的组件来创建颜色。虽然结合青色、品红和黄色会产生黑色,但如果从其中减去一个或多个颜色,则可以得到其他任何颜色。当按各种百分比混合时,这三种颜色可以创建完整的颜色光谱。
混合100%的青色、品红和黄色确实会产生黑色,但结果不令人满意,因为它浪费了油墨,增加了干燥时间,而且在打印时会造成颜色浑浊。因此,在专业印刷中添加黑色以提供纯正的黑色调;因此术语“四色工艺”。
除了标准的CMYK模型外,Qt还提供alpha通道以支持alpha混合绘图。
另请参阅QPalette、QBrush和QColorConstants。
成员类型文档
枚举QColor::NameFormat
如何格式化name()函数的输出
常量 | 值 | 描述 |
---|---|---|
QColor::HexRgb | 0 | #RRGGBB 以“#”字符开始,后跟三个两位的十六进制数(即#RRGGBB )。 |
QColor::HexArgb | 1 | #"AARRGGBB" 由一个 "#" 字符后面跟四个两位十六进制数字组成(例如 #AARRGGBB )。 |
另请参阅name()。
枚举体系结构 QColor::Spec
指定的颜色类型,可以是 RGB、扩展 RGB、HSV、CMYK 或 HSL。
常量 | 值 |
---|---|
QColor::Rgb | 1 |
QColor::Hsv | 2 |
QColor::Cmyk | 3 |
QColor::Hsl | 4 |
QColor::ExtendedRgb | 5 |
QColor::Invalid | 0 |
成员函数文档
[constexpr noexcept]
QColor::QColor()
使用 RGB 值 (0, 0, 0) 构建一个无效的颜色。一个无效的颜色是指未正确配置为底层窗口系统的颜色。
无效颜色的 alpha 值是不确定的。
另请参阅isValid()。
[noexcept]
QColor::QColor(Qt::GlobalColor color)
这是一个重载函数。
使用 color 的颜色值构建一个新的颜色。
[constexpr noexcept]
QColor::QColor(int r, int g, int b, int a = 255)
使用 r,g,b 的 RGB 值和一个 alphații(透明度)值 a 构建一个颜色。
如果任何参数无效,颜色设置为无效。
[noexcept]
QColor::QColor(QRgb color)
使用 color 的值构建一个颜色。alpha 组件被忽略并设置为不透明。
[noexcept]
QColor::QColor(QRgba64 rgba64)
使用 rgba64 的值构建一个颜色。
另请参阅fromRgba64。
QColor::QColor(const QString &name)
使用提供的 name ,以与 setNamedColor() 相同的方式构建一个命名颜色。
如果 name 无法解析,颜色保留为无效。
另请参阅setNamedColor,name 和 isValid。
QColor::QColor(QLatin1StringView name)
使用提供的 name ,以与 setNamedColor() 相同的方式构建一个命名颜色。
这是一个重载函数。
另请参阅setNamedColor,name 和 isValid。
QColor::QColor(QString name)
使用提供的 name ,以与 setNamedColor() 相同的方式构建一个命名颜色。
这是一个重载函数。
另请参阅setNamedColor,name 和 isValid。
[noexcept]
int QColor::alpha() const
返回此颜色的 alpha 颜色组件。
另请参阅setAlpha,alphaF 和 Alpha 合成绘制。
[noexcept]
float QColor::alphaF() const
返回此颜色的 alpha 颜色组件。
另请参阅setAlphaF、alpha 和 Alpha-Blended Drawing。
[noexcept]
int QColor::black() const
返回此颜色的黑色分量。
另请参阅blackF、getCmyk 和 CMYK颜色模型。
[noexcept]
float QColor::blackF() const
返回此颜色的黑色分量。
另请参阅black、getCmykF 和 CMYK颜色模型。
[noexcept]
int QColor::blue() const
返回此颜色的蓝色分量。
[noexcept]
float QColor::blueF() const
返回此颜色的蓝色分量。
[static]
QStringList QColor::colorNames()
返回包含Qt已知的颜色名称的QStringList。
另请参阅预定义颜色。
[noexcept]
QColor QColor::convertTo(QColor::Spec colorSpec) const
根据colorSpec指定的格式创建一个此颜色的副本。
另请参阅spec、toCmyk、toHsv、toRgb 和 isValid。
[noexcept]
int QColor::cyan() const
返回此颜色的青色分量。
[noexcept]
float QColor::cyanF() const
返回此颜色的青色分量。
[noexcept]
QColor QColor::darker(int factor = 200) const
返回一个较暗(或较亮)的颜色,但不会改变此对象。
如果factor大于100,此函数返回一个较暗的颜色。将factor设置为300将返回亮度为三分之一的颜色。如果factor小于100,返回的颜色较亮,但我们推荐使用lighter()函数进行此目的。如果factor为0或负数,返回值未指定。
此函数将当前颜色转换为HSV,将值(V)分量除以因子,并将颜色转换回原始颜色规范。
[静态]
QColor QColor::fromCmyk(int c, int m, int y, int k, int a = 255)
静态便利函数,返回由给定的CMYK颜色值构建的QColor:c(青色),m(品红色),y(黄色),k(黑色),和a(透明通道,即透明度)。
所有值必须在0-255的范围内。
另请参阅toCmyk(),fromCmykF(),isValid(),以及CMYK颜色模型。
[静态]
QColor QColor::fromCmykF(float c, float m, float y, float k, float a = 1.0)
这是一个重载函数。
静态便利函数,返回由给定的CMYK颜色值构建的QColor:c(青色),m(品红色),y(黄色),k(黑色),和a(透明通道,即透明度)。
所有值必须在0.0-1.0的范围内。
另请参阅toCmyk(),fromCmyk(),isValid(),以及CMYK颜色模型。
[静态]
QColor QColor::fromHsl(int h, int s, int l, int a = 255)
静态便利函数,返回由HSV颜色值构建的QColor:h(色调),s(饱和度),l(亮度),和a(透明通道,即透明度)。
s,l和a的值必须在0-255的范围内;h的值必须在0-359的范围内。
另请参阅toHsl(),fromHslF(),isValid(),以及HSL颜色模型。
[静态]
QColor QColor::fromHslF(float h, float s, float l, float a = 1.0)
这是一个重载函数。
静态便利函数,返回由HSV颜色值构建的QColor:h(色调),s(饱和度),l(亮度),和a(透明通道,即透明度)。
所有值必须在0.0-1.0的范围内。
另请参阅toHsl(),fromHsl(),isValid(),以及HSL颜色模型。
[静态]
QColor QColor::fromHsv(int h, int s, int v, int a = 255)
静态便利函数,返回由HSV颜色值构建的QColor:h(色调),s(饱和度),v(值),和a(透明通道,即透明度)。
s,v和a的值都必须在0-255的范围内;h的值必须在0-359的范围内。
另请参阅 toHsv(), fromHsvF(), isValid() 以及 HSV 色彩模型.
[静态]
QColor QColor::fromHsvF(float h, float s, float v, float a = 1.0)
这是一个重载函数。
静态便利函数,返回由HSV颜色值构建的QColor:h(色调),s(饱和度),v(值),和a(透明通道,即透明度)。
所有值必须在0.0-1.0的范围内。
另请参阅 toHsv(), fromHsv(), isValid() 以及 HSV 色彩模型.
[静态 noexcept]
QColor QColor::fromRgb(QRgb rgb)
静态便利函数,返回由给定 QRgb 值 rgb 构成的 QColor.
rgb 的透明度成分被忽略(即自动设置为 255),使用 fromRgba() 函数包含由给定 QRgb 值指定的透明通道。
另请参阅 fromRgba(), fromRgbF(), toRgb() 以及 isValid.
[静态]
QColor QColor::fromRgb(int r, int g, int b, int a = 255)
静态便利函数,返回由 RGB 色彩值(红 r、绿 g、蓝 b)和透明通道 a(即透明度)构成的 QColor.
所有值必须在0-255的范围内。
另请参阅 toRgb(), fromRgba64(), fromRgbF() 以及 isValid.
[静态 noexcept]
QColor QColor::fromRgba64(ushort r, ushort g, ushort b, ushort a = USHRT_MAX)
静态便利函数,返回由 RGBA64 色彩值(红 r、绿 g、蓝 b、透明通道 a)构成的 QColor.
另请参阅 fromRgb(), fromRgbF(), toRgb() 以及 isValid.
[静态 noexcept]
QColor QColor::fromRgba64(QRgba64 rgba64)
静态便利函数,返回由给定的 QRgba64 值 rgba64 构成的 QColor.
另请参阅 fromRgb(), fromRgbF(), toRgb() 以及 isValid.
[静态]
QColor QColor::fromRgbF(float r, float g, float b, float a = 1.0)
静态便利函数,返回由 RGB 色彩值(红 r、绿 g、蓝 b)和透明通道 a(即透明度)构成的 QColor.
alpha值必须在0.0-1.0的范围内。如果其他任何值超出0.0-1.0的范围,则颜色模型将被设置为ExtendedRgb
。
另见 fromRgb(),fromRgba64(),toRgb()和isValid()。
[static noexcept]
QColor QColor::fromRgba(QRgb rgba)
静态方便函数,返回由给定的QRgb
值rgba构建的QColor
。
与fromRgb()函数不同,这里指定的QRgb
值包括alpha通道。
另见 fromRgb(),fromRgba64()和isValid()。
[static noexcept, since 6.4]
QColor QColor::fromString(QAnyStringView name)
从name中解析出RGB QColor
,该name可能采用以下格式之一
- #RGB (R,G,B各为一个十六进制数字)
- #RRGGBB
- #AARRGGBB (自5.2起)
- #RRRGGGBBB
- #RRRRGGGGBBBB
- 来自万维网联盟提供的SVG颜色关键字列表中定义的颜色的名称;例如,“steelblue”或“gainsboro”。这些颜色名在所有平台上都有效。请注意,这些颜色名不与Qt::GlobalColor枚举中定义的相同,例如,“green”和
Qt::green
不指向相同的颜色。 transparent
- 表示颜色的不存在。
如果name无法解析,则返回无效的颜色。
此函数自Qt 6.4引入。
另见 isValidColorName。
void QColor::getCmyk(int *c, int *m, int *y, int *k, int *a = nullptr) const
将指出由c,m,y,k和a的内容设为颜色的CMYK值中的青色、品红色、黄色、黑色和alpha通道(透明度)组件。
可以通过使用cyan(),magenta(),yellow(),black()和alpha()函数分别检索这些组件。
void QColor::getCmykF(float *c, float *m, float *y, float *k, float *a = nullptr) const
将指出由c,m,y,k和a的内容设为颜色的CMYK值中的青色、品红色、黄色、黑色和alpha通道(透明度)组件。
这些组件可以通过使用cyanF(),magentaF(),yellowF(),blackF()和alphaF()函数分别检索。
void QColor::getHsl(int *h, int *s, int *l, int *a = nullptr) const
将指向h、s、l和a的内容设置为颜色HSL值的色调、饱和度、亮度和alpha通道(透明度)分量。
可以使用hslHue()、hslSaturation()、lightness()和alpha()函数分别检索这些分量。
void QColor::getHslF(float *h, float *s, float *l, float *a = nullptr) const
将指向h、s、l和a的内容设置为颜色HSL值的色调、饱和度、亮度和alpha通道(透明度)分量。
可以使用hslHueF()、hslSaturationF()、lightnessF()和alphaF()函数分别检索这些分量。
void QColor::getHsv(int *h, int *s, int *v, int *a = nullptr) const
将指向h、s、v和a的内容设置为颜色HSV值的色调、饱和度、值和alpha通道(透明度)分量。
可以使用hue()、saturation()、value()和alpha()函数分别检索这些分量。
void QColor::getHsvF(float *h, float *s, float *v, float *a = nullptr) const
将指向h、s、v和a的内容设置为颜色HSV值的色调、饱和度、值和alpha通道(透明度)分量。
可以使用hueF()、saturationF()、valueF()和alphaF()函数分别检索这些分量。
void QColor::getRgb(int *r, int *g, int *b, int *a = nullptr) const
将指向r、g、b和a的内容设置为颜色RGB值的红色、绿色、蓝色和alpha通道(透明度)分量。
可以使用red()、green()、blue()和alpha()函数分别检索这些分量。
void QColor::getRgbF(float *r, float *g, float *b, float *a = nullptr) const
将指向r、g、b和a的内容设置为颜色RGB值的红色、绿色、蓝色和alpha通道(透明度)分量。
可以使用redF()、greenF()、blueF()和alphaF()函数分别检索这些分量。
[noexcept]
int QColor::green() const
返回此颜色的绿色颜色成分。
setGreen(),greenF() 和 getRgb()。
[noexcept]
float QColor::greenF() const
返回此颜色的绿色颜色成分。
[noexcept]
int QColor::hslHue() const
返回此颜色的 HSL 色调颜色成分。
hslHueF(),hsvHue(),getHsl() 和 HSL 颜色模型。
[noexcept]
float QColor::hslHueF() const
返回此颜色的 HSL 色调颜色成分。
[noexcept]
int QColor::hslSaturation() const
返回此颜色的 HSL 饱和度颜色成分。
hslSaturationF(),hsvSaturation(),getHsl() 和 HSL 颜色模型。
[noexcept]
float QColor::hslSaturationF() const
返回此颜色的 HSL 饱和度颜色成分。
hslSaturation(),hsvSaturationF(),getHslF 和 HSL 颜色模型。
[noexcept]
int QColor::hsvHue() const
返回此颜色的 HSV 色调颜色成分。
hueF(),hslHue(),getHsv() 和 HSV 颜色模型。
[noexcept]
float QColor::hsvHueF() const
返回此颜色的色调颜色成分。
hue(),hslHueF(),getHsvF 和 HSV 颜色模型。
[noexcept]
int QColor::hsvSaturation() const
返回此颜色的 HSV 饱和度颜色成分。
saturationFs(),hslSaturation(),getHsv() 和 HSV 颜色模型。
[noexcept]
float QColor::hsvSaturationF() const
返回此颜色的 HSV 饱和度颜色成分。
saturation(),hslSaturationF(),getHsvF 和 HSV 颜色模型。
[noexcept]
int QColor::hue() const
返回此颜色的 HSV 色调颜色成分。
颜色会隐式转换为HSV格式。
另请参阅 hsvHue(), hslHue(), hueF(), getHsv(),以及 HSV颜色模型。
[noexcept]
float QColor::hueF() const
返回此颜色的 HSV 色调颜色成分。
颜色会隐式转换为HSV格式。
另请参阅 hsvHueF(), hslHueF(), hue(), getHsvF(),以及 HSV颜色模型。
[noexcept]
bool QColor::isValid() const
如果颜色有效则返回 true
,否则返回 false
。
[静态noexcept,自6.4版本起]
bool QColor::isValidColorName(QAnyStringView name)
如果 name 是有效的颜色名称并且可以用来构造一个有效的 QColor 对象,则返回 true
,否则返回 false
。
它使用与 fromString() 相同的算法。
此函数自Qt 6.4引入。
另请参阅 fromString。
[noexcept]
QColor QColor::lighter(int factor = 150) const
返回一个更亮(或更暗)的颜色,但不会改变此对象。
如果 factor 大于 100,此函数返回更亮的颜色。将 factor 设置为 150 将返回一个亮 50% 的颜色。如果 factor 小于 100,返回的颜色会更暗,但我们推荐使用 darker 函数来实现这个目的。如果 factor 为 0 或负值,则返回值是不确定的。
该函数将当前颜色转换为HSV,将值(V)分量乘以 factor,然后将颜色转换回原始颜色规范。
[noexcept]
int QColor::lightness() const
返回此颜色的亮度颜色分量。
另请参阅 lightnessF()和 getHsl()。
[noexcept]
float QColor::lightnessF() const
返回此颜色的亮度颜色分量。
[noexcept]
int QColor::magenta() const
返回此颜色的洋红色分量。
另请参阅 magentaF(), getCmyk(),以及 CMYK颜色模型。
[noexcept]
float QColor::magentaF() const
返回此颜色的洋红色分量。
另请参阅 magenta(),getCmykF() 和 CMYK颜色模型。
QString QColor::name(QColor::NameFormat format = HexRgb) const
以指定格式返回颜色的名称。
另请参阅 fromString() 和 NameFormat。
[noexcept]
int QColor::red() const
返回此颜色的红色分量。
另请参阅 setRed(),redF() 和 getRgb。
[noexcept]
float QColor::redF() const
返回此颜色的红色分量。
另请参阅 setRedF(),red() 和 getRgbF。
[noexcept]
QRgb QColor::rgb() const
返回颜色的RGB值。alpha值是不透明的。
另请参阅 setRgb(),getRgb() 和 rgba。
[noexcept]
QRgba64 QColor::rgba64() const
返回颜色的RGB64值,包括其alpha值。
对于无效的颜色,返回颜色的alpha值未指定。
另请参阅 setRgba64(),rgba() 和 rgb。
[noexcept]
QRgb QColor::rgba() const
返回包括其alpha的颜色的RGB值。
对于无效的颜色,返回颜色的alpha值未指定。
另请参阅 setRgba(),rgb() 和 rgba64。
[noexcept]
int QColor::saturation() const
返回此颜色的 HSV 饱和度颜色成分。
颜色会隐式转换为HSV格式。
另请参阅 hsvSaturation(),hslSaturation,saturationF,getHsv() 和 HSV颜色模型。
[noexcept]
float QColor::saturationF() const
返回此颜色的 HSV 饱和度颜色成分。
颜色会隐式转换为HSV格式。
另请参阅 hsvSaturationF,hslSaturationF,saturation,getHsvF() 和 HSV颜色模型。
void QColor::setAlpha(int alpha)
将此颜色的alpha设为alpha。整数alpha的范围是0-255。
void QColor::setAlphaF(float alpha)
将此颜色的alpha设置为alpha。浮点alpha的范围是0.0-1.0。
另请参阅 alphaF(),alpha() 和 Alpha-Blended Drawing。
void QColor::setBlue(int blue)
设置此颜色的蓝色分量。整数分量指定在 0-255 的范围内。
另请参阅 blue(),blueF() 和 setRgb()。
void QColor::setBlueF(float blue)
将此颜色的蓝色分量设置为 blue。如果 blue 超出 0.0-1.0 的范围,颜色模型将更改为 ExtendedRgb
。
另请参阅 blueF(),blue() 和 setRgbF()。
void QColor::setCmyk(int c, int m, int y, int k, int a = 255)
将颜色设置为 CMYK 值,c(青色),m(品红色),y(黄色),k(黑色),和 a(透明度,即 alpha 通道)。
所有值必须在0-255的范围内。
另请参阅 getCmyk(),setCmykF() 和 CMYK 颜色模型。
void QColor::setCmykF(float c, float m, float y, float k, float a = 1.0)
这是一个重载函数。
将颜色设置为 CMYK 值,c(青色),m(品红色),y(黄色),k(黑色),和 a(透明度,即 alpha 通道)。
所有值必须在0.0-1.0的范围内。
另请参阅 getCmykF(),setCmyk() 和 CMYK 颜色模型。
void QColor::setGreen(int green)
设置此颜色的绿色分量。整数分量指定在 0-255 的范围内。
另请参阅 green(),greenF() 和 setRgb()。
void QColor::setGreenF(float green)
将此颜色的绿色分量设置为 green。如果 green 超出 0.0-1.0 的范围,颜色模型将更改为 ExtendedRgb
。
另请参阅 greenF(),green() 和 setRgbF()。
void QColor::setHsl(int h, int s, int l, int a = 255)
设置 HSL 颜色值;h 是色调,s 是饱和度,l 是亮度,而 a 是 HSL 颜色的 alpha 分量。
饱和度、亮度和 alpha 通道值必须在 0-255 的范围内,而色调值必须大于 -1。
void QColor::setHslF(float h, float s, float l, float a = 1.0)
设置 HSL 颜色的亮度;h 是色调,s 是饱和度,l 是亮度,而 a 是 HSL 颜色的 alpha 分量。
所有值必须在0.0-1.0的范围内。
void QColor::setHsv(int h, int s, int v, int a = 255)
设置HSV颜色值;h 为色调,s 为饱和度,v 为亮度,和 a 为HSV颜色的alpha成分。
饱和度、亮度和 alpha 通道值必须在 0-255 的范围内,而色调值必须大于 -1。
另请参阅 getHsv(),setHsvF(),和 HSV颜色模型.
void QColor::setHsvF(float h, float s, float v, float a = 1.0)
设置HSV颜色值;h 为色调,s 为饱和度,v 为亮度,和 a 为HSV颜色的alpha成分。
所有值必须在0.0-1.0的范围内。
另请参阅 getHsvF(),setHsv,和 HSV颜色模型.
void QColor::setRed(int red)
将此颜色的红色成分设为 red。整数成分在0-255范围内指定。
void QColor::setRedF(float red)
将此颜色的红色成分设为 red。如果 red 超出0.0-1.0范围,颜色模型将改为 ExtendedRgb
。
void QColor::setRgb(int r, int g, int b, int a = 255)
将RGB值设置为 r、g、b,并设置alpha值为 a。
所有值必须在0-255的范围内。
另请参阅 rgb(),getRgb,和 setRgbF().
[noexcept]
void QColor::setRgb(QRgb rgb)
这是一个重载函数。
将RGB值设置为 rgb。alpha值设置为不透明。
[noexcept]
void QColor::setRgba64(QRgba64 rgba)
将RGB64值设置为 rgba,包括其alpha值。
void QColor::setRgbF(float r, float g, float b, float a = 1.0)
将此颜色的通道设置为 r(红色)、g(绿色)、b(蓝色),和 a(alpha,透明度)。
alpha值必须在0.0-1.0的范围内。如果其他任何值超出0.0-1.0的范围,则颜色模型将被设置为ExtendedRgb
。
另请参阅 rgb(),getRgbF,和 setRgb().
[noexcept]
void QColor::setRgba(QRgb rgba)
设置RGB值到rgba,包括其alpha值。
另请参阅rgba(),rgb(),和setRgba64()。
[noexcept]
QColor::Spec QColor::spec() const
返回颜色是如何指定的。
[noexcept]
QColor QColor::toCmyk() const
创建并返回基于此颜色的CMYK QColor。
另请参阅fromCmyk(),convertTo(),isValid(),和CMYK颜色模型。
[noexcept]
QColor QColor::toExtendedRgb() const
基于此颜色创建并返回一个扩展的RGB QColor。
[noexcept]
QColor QColor::toHsl() const
创建并返回基于此颜色的HSL QColor。
另请参阅fromHsl(),convertTo(),isValid(),和HSL颜色模型。
[noexcept]
QColor QColor::toHsv() const
创建并返回基于此颜色的HSV QColor。
另请参阅fromHsv(),convertTo(),isValid(),和HSV颜色模型。
[noexcept]
QColor QColor::toRgb() const
创建并返回基于此颜色的RGB QColor。
另请参阅fromRgb(),convertTo(),和isValid()。
[noexcept]
int QColor::value() const
返回此颜色的值颜色组件。
另请参阅valueF(),getHsv(),和HSV颜色模型。
[noexcept]
float QColor::valueF() const
返回此颜色的值颜色组件。
另请参阅value(),getHsvF(),和HSV颜色模型。
[noexcept]
int QColor::yellow() const
返回此颜色的黄色颜色组件。
另请参阅 yellowF(),getCmyk(),以及 CMYK颜色模型。
[noexcept]
float QColor::yellowF() const
返回此颜色的黄色颜色组件。
另请参阅 yellow,getCmykF,以及 CMYK颜色模型。
QVariant QColor::operator QVariant() const
以 QVariant 形式返回颜色。
[noexcept]
bool QColor::operator!=(const QColor &color) const
如果此颜色与 color 的颜色规范或组件值不同,则返回 true
;否则返回 false
。
在此上下文中,考虑 ExtendedRgb 和 Rgb 规范是匹配的。
另请参阅 spec。
[noexcept]
QColor &QColor::operator=(Qt::GlobalColor color)
这是一个重载函数。
分配一个 color 的副本,并返回对此颜色的引用。
[noexcept]
bool QColor::operator==(const QColor &color) const
如果此颜色与 color 的颜色规范和组件值相同,则返回 true
;否则返回 false
。
在此上下文中,考虑 ExtendedRgb 和 Rgb 规范是匹配的。
另请参阅 spec。
相关非成员函数
QRgb
ARGB 四元组格式为 #AARRGGBB,相当于无符号整数。
该类型还包含 alpha 通道的值。默认的 alpha 通道值为 ff
,即不透明。有关更多信息,请参阅 Alpha-Blended Drawing 部分。
以下是创建 QRgb 值的示例
const QRgb rgb1 = 0x88112233; const QRgb rgb2 = QColor("red").rgb(); const QRgb rgb3 = qRgb(qRed(rgb1), qGreen(rgb2), qBlue(rgb2)); const QRgb rgb4 = qRgba(qRed(rgb1), qGreen(rgb2), qBlue(rgb2), qAlpha(rgb1));
另请参阅 qRgb(),qRgba(),QColor::rgb,以及 QColor::rgba。
[constexpr]
int qAlpha(QRgb rgba)
返回 ARGB 四元组 rgba 的 alpha 成分。
另请参阅 qRgb 和 QColor::alpha。
[constexpr]
uint qAlpha(QRgba64 rgba64)
以 8 位值的形式返回 rgba64 的 alpha 成分。
另请参阅 QRgba64::alpha8 和 QColor::alpha。
[constexpr]
int qBlue(QRgb rgb)
返回 ARGB 四元组 rgb 的蓝色分量。
另请参阅 qRgb 和 QColor::blue。
[constexpr]
uint qBlue(QRgba64 rgba64)
返回rgba64的蓝色分量,作为一个8位值。
另请参阅QRgba64::blue8()和QColor::blue().
[constexpr]
int qGray(int r, int g, int b)
从(r, g, b)三元组中返回灰度值(0到255)。
灰度值通过公式(r * 11 + g * 16 + b * 5)/32计算。
[constexpr]
int qGray(QRgb rgb)
这是一个重载函数。
从给定的ARGB四元组rgb返回灰度值(0到255)。
灰度值通过公式(R * 11 + G * 16 + B * 5)/32计算;alpha通道被忽略。
[constexpr]
int qGreen(QRgb rgb)
返回ARGB四元组rgb的绿色分量。
另请参阅qRgb()和QColor::green().
[constexpr]
uint qGreen(QRgba64 rgba64)
返回rgba64的绿色分量,作为一个8位值。
另请参阅QRgba64::green8()和QColor::green().
[constexpr]
QRgb qPremultiply(QRgb rgb)
将未预乘的ARGB四元组rgb转换为预乘的ARGB四元组。
另请参阅qUnpremultiply().
[constexpr]
QRgba64 qPremultiply(QRgba64 rgba64)
将未预乘的QRgba64四元组rgba64转换为预乘的QRgba64四元组。
另请参阅QRgba64::premultiplied()和qUnpremultiply().
[constexpr]
int qRed(QRgb rgb)
返回ARGB四元组rgb的红分量。
另请参阅qRgb()和QColor::red().
[constexpr]
uint qRed(QRgba64 rgba64)
返回rgba64的红分量,作为一个8位值。
另请参阅QRgba64::red8()和QColor::red().
[constexpr]
QRgb qRgb(int r, int g, int b)
返回ARGB四元数(255, r, g, b)。
另见 qRgba()、qRed()、qGreen()、qBlue() 和 qAlpha。
[constexpr]
QRgba64 qRgba64(quint16 r, quint16 g, quint16 b, quint16 a)
返回QRgba64四元数(r, g, b, a)。
另见 qRgba。
[constexpr]
QRgba64 qRgba64(quint64 c)
将c作为QRgba64结构返回。
另见 qRgba。
[constexpr]
QRgb qRgba(int r, int g, int b, int a)
返回ARGB四元数(《i translate="no">a、r、g、b)。
另见 qRgb()、qRed()、qGreen()、qBlue() 和 qAlpha。
QRgb qUnpremultiply(QRgb rgb)
将预乘ARGB四元数rgb转换为未预乘ARGB四元数。
另见 qPremultiply。
[constexpr]
QRgba64 qUnpremultiply(QRgba64 rgba64)
将预乘QRgba64四元数rgba64转换为未预乘QRgba64四元数。
另见 QRgba64::unpremultiplied() 和 qPremultiply。
QDataStream &operator<<(QDataStream &stream, const QColor &color)
将color写入stream。
另见 序列化 Qt 数据类型。
QDataStream &operator>>(QDataStream &stream, QColor &color)
从stream读取color。
另见 序列化 Qt 数据类型。
© 2024 The Qt Company Ltd。本文档中包含的文档贡献归其各自所有者享有版权。提供的文档使用Free Software Foundation发布,依据GNU Free Documentation License版本1.3的条款许可。Qt及其相关标志是The Qt Company Ltd在芬兰和其他国家/地区的商标。所有其他商标归其各自所有者所有。