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 |
| 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")或一个颜色名称(例如 "blue")来设置颜色。 颜色名称取自 SVG 1.0 颜色名称规范。name() 函数返回格式为“#RRGGBB”的颜色名称。还可以使用setRgb()、setHsv() 和setCmyk() 函数设置颜色。要获得更浅或更深的颜色,请分别使用lighter() 和darker() 函数。
isValid() 函数用于判断一个 QColor 是否合法。例如,RGB 值超出范围的 RGB 颜色即为非法。出于性能考虑,QColor 通常会忽略非法颜色,因此使用无效颜色时,其结果未定义。
可以单独获取颜色分量,例如使用red()、hue() 和cyan()。也可以通过getRgb()、getHsv() 和getCmyk() 函数一次性获取颜色分量的值。在 RGB 颜色模型下,还可以通过rgb() 访问颜色分量。
还有几个相关的非成员:QRgb 是 unsigned int 的类型定义,表示 RGB 值三元组 (r, g, b)。请注意,它还可以存储 alpha 通道的值(更多信息,请参阅Alpha-Blended Drawing 部分)。 函数qRed()、qBlue() 和qGreen() 分别返回给定QRgb 值的相应分量,而函数qRgb() 和qRgba() 则根据给定的分量值创建并返回QRgb 三元组。最后,函数qAlpha() 返回所提供QRgb 的 alpha 分量,函数qGray() 则根据给定值计算并返回灰度值。
QColor 与平台和设备无关。
有关绘图的一般信息,请参阅“绘图系统”文档。
整数与浮点精度
QColor 支持浮点精度,并提供了所有颜色分量函数的浮点版本,例如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()` 函数进行获取和设置;如果值为浮点数,则使用 `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 (非零像素值) 是用于在 QBitmaps 中绘图的特殊颜色。 使用QColorConstants::Color0 绘制会将位图位设置为 0(透明;即背景),而使用 c{QColorConstants::Color1} 绘制会将位设置为 1(不透明;即前景)。
QColorConstants::Transparent 用于表示透明像素。使用此值绘制时,将采用适合所用底层像素格式的像素值。
出于历史原因,Qt::GlobalColor 枚举中还提供了 20 种预定义颜色。
最后,QColor 还识别各种颜色名称(作为字符串);静态函数colorNames() 返回一个QStringList ,其中包含 QColor 所识别的颜色名称。
扩展 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 还提供了一个 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) 构建一种无效颜色。无效颜色是指未针对底层窗口系统正确设置的颜色。
无效颜色的透明度值未定义。
另请参阅 isValid()。
[noexcept] QColor::QColor(QRgb color)
生成值为color 的颜色。透明度分量将被忽略并设置为不透明。
[noexcept] QColor::QColor(QRgba64 rgba64)
根据值rgba64 构建一种颜色。
另请参阅 fromRgba64()。
QColor::QColor(const QString &name)
使用给定的name ,以与fromString()相同的方式构建一个命名颜色。
如果无法解析name ,则该颜色将被视为无效。
另请参见 fromString()、name() 和isValid()。
[constexpr noexcept] QColor::QColor(int r, int g, int b, int a = 255)
根据 RGB 值r 、g 、b 以及 alpha 通道(透明度)值a 构建一种颜色。
如果任何一个参数无效,则生成的颜色将无效。
QColor::QColor(QLatin1StringView name)
使用给定的name ,以与fromString()相同的方式构建一个命名颜色。
这是一个重载函数。
另请参阅 fromString()、name() 和isValid()。
[noexcept] QColor::QColor(Qt::GlobalColor color)
创建一个颜色值设为color 的新颜色。
这是一个重载函数。
另请参阅 isValid() 和Predefined Colors 。
QColor::QColor(const char *name)
使用给定的name ,以与fromString()相同的方式构造一个命名颜色。
这是一个重载函数。
另请参见 fromString()、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所识别的颜色名称。
另请参阅 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颜色值(c (青色)、m (品红色)、y (黄色)、k (黑色)以及a (Alpha通道,即透明度))构建QColor 对象并返回。
所有值必须在 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 值rgb 构建并返回QColor 对象。
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 值rgba 构建的QColor 。
与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
- 来自万维网联盟(W3C)提供的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值的红、绿、蓝和α通道(透明度)分量。
这些分量可通过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 如果“factor ”大于100,则该函数返回更浅的颜色。 将“ ”设置为 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 值,包括其透明度。
对于无效的颜色,返回颜色的透明度值未定义。
另请参阅 setRgba64()、rgba() 和rgb()。
[noexcept] QRgb QColor::rgba() const
返回该颜色的RGB值,包括其透明度。
对于无效的颜色,所返回颜色的透明度值未定义。
另请参阅 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)以整数形式指定,取值范围为0-255。
另请参阅 alpha()、alphaF() 以及Alpha-Blended Drawing 。
void QColor::setAlphaF(float alpha)
将此颜色的透明度设置为alpha 。浮点数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 颜色的透明度。
饱和度、明度和透明度值必须在 0-255 范围内,色相值必须大于 -1。
void QColor::setHslF(float h, float s, float l, float a = 1.0)
设置 HSL 颜色的明度;h 表示色相,s 表示饱和度,l 表示明度,a 表示 HSL 颜色的透明度。
所有值必须在 0.0 到 1.0 之间。
void QColor::setHsv(int h, int s, int v, int a = 255)
设置 HSV 颜色值;h 表示色相,s 表示饱和度,v 表示明度,a 表示 HSV 颜色的透明度。
饱和度、明度和透明度值必须在 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 颜色的透明度。
所有值必须在 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 ,包括其透明度。
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 ,包括其透明度。
另请参阅 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 。
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
一种格式为 #AARRGGBB 的 ARGB 四元组,等同于一个无符号整数。
该类型还包含一个用于表示 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)
返回rgba64 的alpha分量,作为8位值。
另请参阅 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(quint64 c)
返回一个名为c 的QRgba64 结构体。
另请参阅 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 数据类型的序列化》。
© 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.


