QColor Class
QColor 类提供基于 RGB、HSV 或 CMYK 值的颜色。更多
页首 | #include <QColor> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 所有成员(包括继承成员)的列表
- 已废弃成员
- QColor 属于绘画类。
公共类型
enum | NameFormat { HexRgb, HexArgb } |
enum | Spec { Rgb, Hsv, Cmyk, Hsl, ExtendedRgb, Invalid } |
公共函数
QColor() | |
QColor(QRgb color) | |
QColor(QRgba64 rgba64) | |
QColor(const QString &name) | |
QColor(int r, int g, int b, int a = 255) | |
QColor(QLatin1StringView name) | |
QColor(Qt::GlobalColor color) | |
QColor(const char *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 s, 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 r, 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(QRgba64 rgba64) |
QColor | fromRgba64(ushort r, ushort g, ushort b, ushort a = USHRT_MAX) |
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(quint64 c) |
QRgba64 | qRgba64(quint16 r, quint16 g, quint16 b, quint16 a) |
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() 函数会显示指定颜色的方式。
颜色可以通过向fromString() 函数传递 RGB 字符串(如 "#112233")、ARGB 字符串(如 "#ff112233")或颜色名称(如 "蓝色")来设置。颜色名称取自 SVG 1.0 颜色名称。name() 函数以 "#RRGGBB "格式返回颜色名称。还可以使用setRgb(),setHsv() 和setCmyk() 设置颜色。要获得更浅或更深的颜色,请分别使用lighter() 和darker() 函数。
isValid() 函数指示 QColor 是否合法。例如,RGB 值超出范围的 RGB 颜色是非法的。出于性能考虑,QColor 通常会忽略非法颜色,因此使用无效颜色的结果是未定义的。
可以单独检索颜色成分,例如使用red(),hue() 和cyan() 。也可以使用getRgb(),getHsv() 和getCmyk() 函数一次性获取颜色成分的值。使用 RGB 颜色模型,还可以使用rgb() 访问颜色成分。
有几个相关的非成员:QRgb 是一个无符号 int 的类型定义,代表 RGB 值三元组(r、g、b)。请注意,它还可以保存 alpha 通道的值(更多信息,请参见Alpha-Blended Drawing 部分)。qRed(),qBlue() 和qGreen() 函数返回给定的QRgb 值的相应分量,而qRgb() 和qRgba() 函数根据给定的分量值创建并返回QRgb 三元组。最后,qAlpha() 函数返回所给QRgb 的 alpha 分量,而qGray() 函数则根据给定值计算并返回灰度值。
QColor 与平台和设备无关。QColormap 类将颜色映射到硬件。
有关绘画的更多信息,请参阅绘画系统文档。
整数精度与浮点精度
QColor 支持浮点精度,并为所有颜色组件函数(如getRgbF(),hueF() 和fromCmykF() )提供浮点版本。请注意,由于组件使用 16 位整数存储,因此使用setRgbF() 等函数设置的值与getRgbF() 函数返回的值之间可能会因四舍五入而存在微小偏差。
基于整数的函数取值范围为 0-255(hue() 除外,其取值范围必须为 0-359),而浮点函数取值范围为 0.0 - 1.0。
阿尔法混合绘图
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() 和setAlpha() 函数检索和设置;如果颜色的值是浮点数,则可以使用alphaF() 和setAlphaF() 函数检索和设置。默认情况下,alpha 通道设置为 255(不透明)。要一次性检索和设置所有RGB 颜色成分(包括 alpha 通道),请使用rgba() 和setRgba() 函数。
预定义颜色
QColorConstants
命名空间中有 20 个预定义的 QColor 对象,包括黑色、白色、三原色和二次色、这些颜色的深色版本以及三种灰色。此外,QColorConstants::Svg
名称空间还为标准SVG 颜色关键字名称定义了 QColor 对象。
QColorConstants::Color0
、QColorConstants::Color1
和QColorConstants::Transparent
颜色用于特殊用途。
QColorConstants::Color0
(零像素值)和 (非零像素值)是用于在 QBitmaps 中绘制的特殊颜色。使用 绘制时,位图位将设为 0(透明;即背景),而使用 c{QColorConstants::Color1} 绘制时,位图位将设为 1(不透明;即前景)。QColorConstants::Color1
QColorConstants::Color0
QColorConstants::Transparent
用于表示透明像素。使用此值绘制时,将使用与底层像素格式相适应的像素值。
由于历史原因,在Qt::GlobalColor 枚举中也提供了 20 种预定义颜色。
最后,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,S=255。
对于消色差颜色,Qt 返回的色相值为-1。如果您传递的色相值过大,Qt 会将其强制纳入范围。色调 360 或 720 会被视为 0;色调 540 会被视为 180。
除了标准 HSV 模型外,Qt 还提供了一个 alpha 通道,以alpha-blended drawing 为特征。
HSL 颜色模型
HSL 与 HSV 相似,但 HSL 指定的不是值(Value)参数,而是亮度(Lightness)参数,该参数与颜色的亮度映射有些不同。
同样,对于同一种颜色,HSL 饱和度值与 HSV 饱和度值一般也不相同。hslSaturation() 提供颜色的 HSL 饱和度值,而saturation() 和hsvSaturation() 提供 HSV 饱和度值。
在 HSL 和 HSV 中,色相值的定义是相同的。
CMYK 色彩模型
RGB 和 HSV 色彩模型用于在计算机显示器上显示,而 CMYK 模型则用于印刷机和一些硬拷贝设备的四色印刷过程。
CMYK 有四个组成部分,范围都在 0-255 之间:青色 (C)、洋红色 (M)、黄色 (Y) 和黑色 (K)。青色、洋红色和黄色被称为减色法;CMYK 色彩模型通过从白色表面开始,然后应用适当的成分进行减色来创建色彩。将青色、品红色和黄色组合在一起会产生黑色,而减去其中一种或几种则会产生任何其他颜色。当这三种颜色以不同的比例混合时,可以产生整个光谱的颜色。
将 100%的青色、品红色和黄色混合确实可以产生黑色,但效果并不理想,因为这样会浪费油墨,增加干燥时间,并且在印刷时会产生浑浊的颜色。因此,在专业印刷中需要添加黑色,以提供纯黑色调,这就是 "四色印刷 "一词的由来。
除了标准 CMYK 模式外,Qt XML 还提供了一个 alpha 通道,以实现alpha-blended drawing 的功能。
另请参阅 QPalette,QBrush, 和QColorConstants 。
成员类型文档
enum QColor::NameFormat
如何格式化name() 函数的输出结果
常数 | 值 | 说明 |
---|---|---|
QColor::HexRgb | 0 | #RRGGBB 一个 "#"字符,后跟三个两位十六进制数(即#RRGGBB )。 |
QColor::HexArgb | 1 | #AARRGGBB 一个 "#"字符,后跟四个两位十六进制数(即#AARRGGBB )。 |
另请参阅 name( )。
enum 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(QRgb color)
构建颜色,颜色值为color 。Alpha 部分将被忽略并设置为纯色。
[noexcept]
QColor::QColor(QRgba64 rgba64)
构造一个颜色,其值为rgba64 。
另请参阅 fromRgba64() 。
QColor::QColor(const QString &name)
使用给定的name ,以与 setNamedColor() 相同的方式构造命名颜色。
如果name 无法解析,则颜色无效。
另请参阅 setNamedColor()、name() 和isValid()。
[constexpr noexcept]
QColor::QColor(int r, int g, int b, int a = 255)
创建一个颜色,其 RGB 值为r,g,b, 以及透明度值为a 的 alpha 通道。
如果任何参数无效,则颜色无效。
QColor::QColor(QLatin1StringView name)
使用给定的name ,以与 setNamedColor() 相同的方式构造命名颜色。
这是一个重载函数。
另请参阅 setNamedColor()、name() 和isValid()。
[noexcept]
QColor::QColor(Qt::GlobalColor color)
这是一个重载函数。
构造一个颜色值为color 的新颜色。
另请参阅 isValid() 和Predefined Colors 。
QColor::QColor(const char *name)
使用给定的name ,以与 setNamedColor() 相同的方式构造命名颜色。
这是一个重载函数。
另请参阅 setNamedColor()、name() 和isValid()。
[noexcept]
int QColor::alpha() const
返回此颜色的 alpha 颜色分量。
另请参阅 setAlpha(),alphaF() 和Alpha-Blended Drawing 。
[noexcept]
float QColor::alphaF() const
返回此颜色的 alpha 颜色分量。
另请参阅 setAlphaF(),alpha() 和Alpha-Blended Drawing 。
[noexcept]
int QColor::black() const
返回此颜色的黑色分量。
另请参阅 blackF(),getCmyk() 和The CMYK Color Model 。
[noexcept]
float QColor::blackF() const
返回此颜色的黑色分量。
另请参阅 black(),getCmykF() 和The CMYK Color Model 。
[noexcept]
int QColor::blue() const
返回此颜色的蓝色分量。
另请参阅 setBlue()、blueF() 和getRgb()。
[noexcept]
float QColor::blueF() const
返回此颜色的蓝色分量。
另请参阅 setBlueF()、blue() 和getRgbF()。
[static]
QStringList QColor::colorNames()
返回QStringList ,其中包含 Qt XML 知道的颜色名称。
另请参阅 Predefined Colors 。
[noexcept]
QColor QColor::convertTo(QColor::Spec colorSpec) const
以colorSpec 指定的格式创建该颜色的副本。
另请参阅 spec(),toCmyk(),toHsv(),toRgb() 和isValid().
[noexcept]
int QColor::cyan() const
返回此颜色的青色分量。
另请参阅 cyanF(),getCmyk() 和The CMYK Color Model 。
[noexcept]
float QColor::cyanF() const
返回此颜色的青色分量。
另请参阅 cyan(),getCmykF() 和The CMYK Color Model 。
[noexcept]
QColor QColor::darker(int factor = 200) const
返回更深(或更浅)的颜色,但不会更改此对象。
如果factor 大于 100,该函数将返回更深的颜色。将factor 设置为 300 时,返回的颜色亮度为原来的三分之一。如果factor 小于 100,返回的颜色会变浅,但我们建议使用lighter() 函数来实现这一目的。如果factor 为 0 或负值,则返回值未指定。
该函数将当前颜色转换为 HSV,将值 (V) 分量除以factor ,然后将颜色转换回原始颜色规格。
[static]
QColor QColor::fromCmyk(int c, int m, int y, int k, int a = 255)
静态便利函数,返回由给定 CMYK 颜色值构建的QColor :c (青色)、m (洋红色)、y (黄色)、k (黑色)和a (alpha 通道,即透明度)。
所有数值必须在 0-255 范围内。
另请参阅 toCmyk()、fromCmykF()、isValid() 和The CMYK Color Model 。
[static]
QColor QColor::fromCmykF(float c, float m, float y, float k, float a = 1.0)
这是一个重载函数。
静态便利函数,返回由给定 CMYK 颜色值构建的QColor :c (青色)、m (洋红色)、y (黄色)、k (黑色)和a (alpha 通道,即透明度)。
所有数值必须在 0.0-1.0 范围内。
另请参见 toCmyk()、fromCmyk()、isValid() 和The CMYK Color Model 。
[static]
QColor QColor::fromHsl(int h, int s, int l, int a = 255)
静态便利函数,返回由 HSV 颜色值h (色调)、s (饱和度)、l (亮度)和a (alpha 通道,即透明度)构建的QColor 。
s 、l 和a 的值都必须在 0-255 范围内;h 的值必须在 0-359 范围内。
另请参阅 toHsl()、fromHslF()、isValid() 和The HSL Color Model 。
[static]
QColor QColor::fromHslF(float h, float s, float l, float a = 1.0)
这是一个重载函数。
静态方便函数,返回由 HSV 颜色值、h (色调)、s (饱和度)、l (亮度)和a (alpha 通道,即透明度)构建的QColor 。
所有数值必须在 0.0-1.0 范围内。
另请参见 toHsl()、fromHsl()、isValid() 和The HSL Color Model 。
[static]
QColor QColor::fromHsv(int h, int s, int v, int a = 255)
静态便利函数,返回由 HSV 颜色值h (色调)、s (饱和度)、v (值)和a (alpha 通道,即透明度)构建的QColor 。
s 、v 和a 的值都必须在 0-255 范围内;h 的值必须在 0-359 范围内。
另请参阅 toHsv()、fromHsvF()、isValid() 和The HSV Color Model 。
[static]
QColor QColor::fromHsvF(float h, float s, float v, float a = 1.0)
这是一个重载函数。
静态方便函数,返回由 HSV 颜色值、h (色调)、s (饱和度)、v (值)和a (alpha 通道,即透明度)构建的QColor 。
所有数值必须在 0.0-1.0 范围内。
另请参见 toHsv()、fromHsv()、isValid() 和The HSV Color Model 。
[static noexcept]
QColor QColor::fromRgb(QRgb rgb)
静态便利函数,返回由给定的QRgb 值构建的QColor rgb 。
rgb 的 alpha 部分会被忽略(即自动设置为 255),请使用fromRgba() 函数包含由给定的QRgb 值指定的 alpha 通道。
另请参阅 fromRgba()、fromRgbF()、toRgb() 和isValid()。
[static]
QColor QColor::fromRgb(int r, int g, int b, int a = 255)
静态便利函数,返回由 RGB 颜色值r (红色)、g (绿色)、b (蓝色)和a (alpha 通道,即透明度)构建的QColor 。
所有数值必须在 0-255 范围内。
另请参见 toRgb()、fromRgba64()、fromRgbF() 和isValid()。
[static noexcept]
QColor QColor::fromRgba64(QRgba64 rgba64)
静态便利函数,返回由给定的QRgba64 值rgba64 构建的QColor 。
另请参阅 fromRgb()、fromRgbF()、toRgb() 和isValid() 。
[static noexcept]
QColor QColor::fromRgba64(ushort r, ushort g, ushort b, ushort a = USHRT_MAX)
静态便利函数,返回由 RGBA64 颜色值构建的QColor :r (红色)、g (绿色)、b (蓝色)和a (alpha 通道,即透明度)。
另请参见 fromRgb()、fromRgbF()、toRgb() 和isValid()。
[static]
QColor QColor::fromRgbF(float r, float g, float b, float a = 1.0)
静态便利函数,返回由 RGB 颜色值r (红色)、g (绿色)、b (蓝色)和a (alpha 通道,即透明度)构建的QColor 。
alpha 值的范围必须在 0.0-1.0 之间。如果任何其他值超出 0.0-1.0 的范围,色彩模型将被设置为ExtendedRgb
。
另请参见 fromRgb()、fromRgba64()、toRgb() 和isValid()。
[static noexcept]
QColor QColor::fromRgba(QRgb rgba)
静态便利函数,返回由给定的QRgb 值构建的QColor rgba 。
与fromRgb() 函数不同,该函数包含由给定的QRgb 值指定的 alpha 通道。
另请参阅 fromRgb()、fromRgba64() 和isValid()。
[static noexcept, since 6.4]
QColor QColor::fromString(QAnyStringView name)
返回从name 解析的 RGBQColor ,格式可能是以下其中一种:
- #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() 函数单独检索这些成分。
另请参见 setCmyk() 和The CMYK Color Model 。
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() 函数单独检索这些分量。
另请参见 setCmykF() 和The CMYK Color Model 。
void QColor::getHsl(int *h, int *s, int *l, int *a = nullptr) const
将h,s,l, 和a 所指向的内容设置为颜色 HSL 值的色相、饱和度、亮度和 alpha 通道(透明度)成分。
可以使用hslHue(),hslSaturation(),lightness() 和alpha() 函数单独检索这些成分。
另请参见 getHslF()、setHsl() 和The HSL Color Model 。
void QColor::getHslF(float *h, float *s, float *l, float *a = nullptr) const
将h,s,l, 和a 所指向的内容设置为颜色 HSL 值的色相、饱和度、亮度和 alpha 通道(透明度)成分。
可以使用hslHueF(),hslSaturationF(),lightnessF() 和alphaF() 函数单独检索这些成分。
另请参见 getHsl()、setHslF() 和The HSL Color Model 。
void QColor::getHsv(int *h, int *s, int *v, int *a = nullptr) const
将h,s,v, 和a 所指向的内容设置为颜色 HSV 值的色调、饱和度、值和 alpha 通道(透明度)分量。
可以使用hue(),saturation(),value() 和alpha() 函数单独检索这些分量。
另请参见 setHsv() 和The HSV Color Model 。
void QColor::getHsvF(float *h, float *s, float *v, float *a = nullptr) const
将h,s,v, 和a 所指向的内容设置为颜色 HSV 值的色调、饱和度、值和 alpha 通道(透明度)分量。
可以使用hueF(),saturationF(),valueF() 和alphaF() 函数单独检索这些分量。
另请参见 setHsv() 和The HSV Color Model 。
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
返回此颜色的绿色分量。
另请参阅 setGreenF()、green() 和getRgbF()。
[noexcept]
int QColor::hslHue() const
返回此颜色的 HSL 色相分量。
另请参阅 hslHueF()、hsvHue()、getHsl() 和The HSL Color Model 。
[noexcept]
float QColor::hslHueF() const
返回此颜色的 HSL 色相分量。
另请参阅 hslHue()、hsvHueF() 和getHslF()。
[noexcept]
int QColor::hslSaturation() const
返回此颜色的 HSL 饱和度颜色分量。
另请参阅 hslSaturationF()、hsvSaturation()、getHsl() 和The HSL Color Model 。
[noexcept]
float QColor::hslSaturationF() const
返回此颜色的 HSL 饱和度颜色分量。
另请参阅 hslSaturation()、hsvSaturationF()、getHslF() 和The HSL Color Model 。
[noexcept]
int QColor::hsvHue() const
返回此颜色的 HSV 色相颜色分量。
另请参阅 hueF()、hslHue()、getHsv() 和The HSV Color Model 。
[noexcept]
float QColor::hsvHueF() const
返回此颜色的色调分量。
另请参阅 hue()、hslHueF()、getHsvF() 和The HSV Color Model 。
[noexcept]
int QColor::hsvSaturation() const
返回此颜色的 HSV 饱和度颜色分量。
另请参阅 saturationF()、hslSaturation()、getHsv() 和The HSV Color Model 。
[noexcept]
float QColor::hsvSaturationF() const
返回此颜色的 HSV 饱和度颜色分量。
另请参阅 saturation()、hslSaturationF()、getHsvF() 和The HSV Color Model 。
[noexcept]
int QColor::hue() const
返回此颜色的 HSV 色调分量。
颜色隐式转换为 HSV。
另请参阅 hsvHue()、hslHue()、hueF()、getHsv() 和The HSV Color Model 。
[noexcept]
float QColor::hueF() const
返回此颜色的 HSV 色调分量。
颜色隐式转换为 HSV。
另请参阅 hsvHueF()、hslHueF()、hue()、getHsvF() 和The HSV Color Model 。
[noexcept]
bool QColor::isValid() const
如果颜色有效,则返回true
;否则返回false
。
[static noexcept, since 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() 和The CMYK Color Model 。
[noexcept]
float QColor::magentaF() const
返回此颜色的洋红色分量。
另请参阅 magenta(),getCmykF() 和The CMYK Color Model 。
QString QColor::name(QColor::NameFormat format = HexRgb) const
返回指定format 中的颜色名称。
另请参阅 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 值未指明。
另请参阅 setRgba64()、rgba() 和rgb()。
[noexcept]
QRgb QColor::rgba() const
返回颜色的 RGB 值,包括其 alpha 值。
对于无效颜色,将不指定返回颜色的 alpha 值。
另请参阅 setRgba()、rgb() 和rgba64()。
[noexcept]
int QColor::saturation() const
返回此颜色的 HSV 饱和度颜色分量。
颜色隐式转换为 HSV。
另请参阅 hsvSaturation()、hslSaturation()、saturationF()、getHsv() 和The HSV Color Model 。
[noexcept]
float QColor::saturationF() const
返回此颜色的 HSV 饱和度颜色分量。
颜色隐式转换为 HSV。
另请参阅 hsvSaturationF()、hslSaturationF()、saturation()、getHsvF() 和The HSV Color Model 。
void QColor::setAlpha(int alpha)
将此颜色的 alpha 设置为alpha 。整数 alpha 的指定范围为 0-255。
另请参阅 alpha()、alphaF() 和Alpha-Blended Drawing 。
void QColor::setAlphaF(float alpha)
将此颜色的 alpha 设置为alpha 。float alpha 的指定范围为 0.0-1.0。
另请参阅 alphaF()、alpha() 和Alpha-Blended Drawing 。
void QColor::setBlue(int blue)
将此颜色的蓝色分量设置为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() 和The CMYK Color Model 。
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() 和The CMYK Color Model 。
void QColor::setGreen(int green)
将此颜色的绿色分量设置为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() 和The HSV Color Model 。
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() 和The HSV Color Model 。
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
根据此颜色创建并返回 CMYKQColor 。
另请参阅 fromCmyk(),convertTo(),isValid() 和The CMYK Color Model 。
[noexcept]
QColor QColor::toExtendedRgb() const
根据此颜色创建并返回扩展 RGBQColor 。
[noexcept]
QColor QColor::toHsl() const
根据此颜色创建并返回 HSLQColor 。
另请参阅 fromHsl(),convertTo(),isValid() 和The HSL Color Model 。
[noexcept]
QColor QColor::toHsv() const
根据此颜色创建并返回 HSVQColor 。
另请参阅 fromHsv(),convertTo(),isValid() 和The HSV Color Model 。
[noexcept]
QColor QColor::toRgb() const
根据此颜色创建并返回 RGBQColor 。
另请参阅 fromRgb()、convertTo() 和isValid()。
[noexcept]
int QColor::value() const
返回此颜色的值颜色分量。
另请参阅 valueF(),getHsv() 和The HSV Color Model 。
[noexcept]
float QColor::valueF() const
返回此颜色的值颜色分量。
另请参阅 value(),getHsvF() 和The HSV Color Model 。
[noexcept]
int QColor::yellow() const
返回此颜色的黄色分量。
另请参阅 yellowF(),getCmyk() 和The CMYK Color Model 。
[noexcept]
float QColor::yellowF() const
返回此颜色的黄色分量。
另请参阅 yellow(),getCmykF() 和The CMYK Color Model 。
QVariant QColor::operator QVariant() const
[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
格式为 #AARRGGBB 的 ARGB 四元组,相当于无符号 int。
该类型还包含一个 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)
以 8 位数值返回rgba64 的蓝色分量。
另请参阅 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)
以 8 位数值返回rgba64 的绿色分量。
另请参阅 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)
以 8 位数值返回rgba64 的红色分量。
另请参阅 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(quint64 c)
以QRgba64 结构形式返回c 。
另请参见 qRgba().
[constexpr]
QRgba64 qRgba64(quint16 r, quint16 g, quint16 b, quint16 a)
返回QRgba64 四元组(r,g,b,a )。
另请参见 qRgba().
[constexpr]
QRgb qRgba(int r, int g, int b, int a)
返回 ARGB 四元组 (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 数据类型。
© 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.