QColor 类

QColor 类提供基于 RGB、HSV 或 CMYK 值的颜色。 更多...

头文件 #include <QColor>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui

公共类型

枚举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)
intalpha() const
floatalphaF() const
intblack() const
floatblackF() const
intblue() const
floatblueF() const
QColorconvertTo(QColor::Spec colorSpec) const
intcyan() const
floatcyanF() const
QColordarker(int factor = 200) const
voidgetCmyk(int *c, int *m, int *y, int *k, int *a = nullptr) const
voidgetCmykF(float *c, float *m, float *y, float *k, float *a = nullptr) const
voidgetHsl(int *h, int *s, int *l, int *a = nullptr) const
voidgetHslF(float *h, float *s, float *l, float *a = nullptr) const
voidgetHsv(int *h, int *s, int *v, int *a = nullptr) const
voidgetHsvF(float *h, float *s, float *v, float *a = nullptr) const
voidgetRgb(int *r, int *g, int *b, int *a = nullptr) const
voidgetRgbF(float *r, float *g, float *b, float *a = nullptr) const
intgreen() const
floatgreenF() const
inthslHue() const
floathslHueF() const
inthslSaturation() const
floathslSaturationF() const
inthsvHue() const
floathsvHueF() const
inthsvSaturation() const
floathsvSaturationF() const
inthue() const
floathueF() const
boolisValid() const
QColorlighter(int factor = 150) const
intlightness() const
floatlightnessF() const
intmagenta() const
floatmagentaF() const
QStringname(QColor::NameFormat format = HexRgb) const
intred() const
floatredF() const
QRgbrgb() const
QRgba64rgba64() const
QRgbrgba() const
intsaturation() const
floatsaturationF() const
voidsetAlpha(int alpha)
voidsetAlphaF(float alpha)
voidsetBlue(int blue)
voidsetBlueF(float blue)
voidsetCmyk(int c, int m, int y, int k, int a = 255)
voidsetCmykF(float c, float m, float y, float k, float a = 1.0)
voidsetGreen(int green)
voidsetGreenF(float green)
voidsetHsl(int h, int s, int l, int a = 255)
voidsetHslF(float h, float s, float l, float a = 1.0)
voidsetHsv(int h, int , int v, int a = 255)
voidsetHsvF(float h, float s, float v, float a = 1.0)
voidsetRed(int red)
voidsetRedF(float red)
voidsetRgb(int r, int g, int b, int a = 255)
voidsetRgb(QRgb rgb)
voidsetRgba64(QRgba64 rgba)
voidsetRgbF(float , float g, float b, float a = 1.0)
voidsetRgba(QRgb rgba)
QColor::Specspec() const
QColortoCmyk() const
QColortoExtendedRgb() const
QColortoHsl() const
QColortoHsv() const
QColortoRgb() const
intvalue() const
floatvalueF() const
intyellow() const
floatyellowF() const
QVariantoperator QVariant() const
booloperator!=(const QColor &color) const
QColor &operator=(Qt::GlobalColor color)
booloperator==(const QColor &color) const

静态公共成员

QStringListcolorNames()
QColorfromCmyk(int c, int m, int y, int k, int a = 255)
QColorfromCmykF(float c, float m, float y, float k, float a = 1.0)
QColorfromHsl(int h, int s, int l, int a = 255)
QColorfromHslF(float h, float s, float l, float a = 1.0)
QColorfromHsv(int h, int s, int v, int a = 255)
QColorfromHsvF(float h, float s, float v, float a = 1.0)
QColorfromRgb(QRgb rgb)
QColorfromRgb(int r, int g, int b, int a = 255)
QColorfromRgba64(ushort r, ushort g, ushort b, ushort a = USHRT_MAX)
QColorfromRgba64(QRgba64 rgba64)
QColorfromRgbF(float r, float g, float b, float a = 1.0)
QColorfromRgba(QRgb rgba)
(since 6.4) QColorfromString(QAnyStringView name)
(since 6.4) boolisValidColorName(QAnyStringView name)
QRgb
intqAlpha(QRgb rgba)
uintqAlpha(QRgba64 rgba64)
intqBlue(QRgb rgb)
uintqBlue(QRgba64 rgba64)
intqGray(int r, int g, int b)
intqGray(QRgb rgb)
intqGreen(QRgb rgb)
uintqGreen(QRgba64 rgba64)
QRgbqPremultiply(QRgb rgb)
QRgba64qPremultiply(QRgba64 rgba64)
intqRed(QRgb rgb)
uintqRed(QRgba64 rgba64)
QRgbqRgb(int r, int g, int b)
QRgba64qRgba64(quint16 r, quint16 g, quint16 b, quint16 a)
QRgba64qRgba64(quint64 c)
QRgbqRgba(int r, int g, int b, int a)
QRgbqUnpremultiply(QRgb rgb)
QRgba64qUnpremultiply(QRgba64 rgba64)
QDataStream &operator<<(QDataStream &stream, const QColor &color)
QDataStream &operator>>(QDataStream &stream, QColor &color)

详细描述

颜色通常根据 RGB(红色、绿色和蓝色)组件来指定,但也可以根据 HSV(色调、饱和度和值)和 CMYK(青色、品红色、黄色和黑色)组件来指定。此外,还可以使用颜色名称来指定颜色。颜色名称可以是 SVG 1.0 的任何颜色名称。

RGBHSVCMYK

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 对象。

Qt Colors

用于特殊目的的 QColorConstants::Color0QColorConstants::Color1QColorConstants::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混合绘图

另请参阅QPaletteQBrushQColorConstants

成员类型文档

枚举QColor::NameFormat

如何格式化name()函数的输出

常量描述
QColor::HexRgb0#RRGGBB 以“#”字符开始,后跟三个两位的十六进制数(即#RRGGBB)。
QColor::HexArgb1#"AARRGGBB" 由一个 "#" 字符后面跟四个两位十六进制数字组成(例如 #AARRGGBB)。

另请参阅name()。

枚举体系结构 QColor::Spec

指定的颜色类型,可以是 RGB、扩展 RGB、HSV、CMYK 或 HSL。

常量
QColor::Rgb1
QColor::Hsv2
QColor::Cmyk3
QColor::Hsl4
QColor::ExtendedRgb5
QColor::Invalid0

另请参阅spec() 和 convertTo()。

成员函数文档

[constexpr noexcept] QColor::QColor()

使用 RGB 值 (0, 0, 0) 构建一个无效的颜色。一个无效的颜色是指未正确配置为底层窗口系统的颜色。

无效颜色的 alpha 值是不确定的。

另请参阅isValid()。

[noexcept] QColor::QColor(Qt::GlobalColor color)

这是一个重载函数。

使用 color 的颜色值构建一个新的颜色。

另请参阅isValid() 和 预定义颜色

[constexpr noexcept] QColor::QColor(int r, int g, int b, int a = 255)

使用 rgb 的 RGB 值和一个 alphații(透明度)值 a 构建一个颜色。

如果任何参数无效,颜色设置为无效。

另请参阅setRgba() 和 isValid

[noexcept] QColor::QColor(QRgb color)

使用 color 的值构建一个颜色。alpha 组件被忽略并设置为不透明。

另请参阅fromRgb() 和 isValid

[noexcept] QColor::QColor(QRgba64 rgba64)

使用 rgba64 的值构建一个颜色。

另请参阅fromRgba64

QColor::QColor(const QString &name)

使用提供的 name ,以与 setNamedColor() 相同的方式构建一个命名颜色。

如果 name 无法解析,颜色保留为无效。

另请参阅setNamedColornameisValid

QColor::QColor(QLatin1StringView name)

使用提供的 name ,以与 setNamedColor() 相同的方式构建一个命名颜色。

这是一个重载函数。

另请参阅setNamedColornameisValid

QColor::QColor(QString name)

使用提供的 name ,以与 setNamedColor() 相同的方式构建一个命名颜色。

这是一个重载函数。

另请参阅setNamedColornameisValid

[noexcept] int QColor::alpha() const

返回此颜色的 alpha 颜色组件。

另请参阅setAlphaalphaFAlpha 合成绘制

[noexcept] float QColor::alphaF() const

返回此颜色的 alpha 颜色组件。

另请参阅setAlphaFalphaAlpha-Blended Drawing

[noexcept] int QColor::black() const

返回此颜色的黑色分量。

另请参阅blackFgetCmykCMYK颜色模型

[noexcept] float QColor::blackF() const

返回此颜色的黑色分量。

另请参阅blackgetCmykFCMYK颜色模型

[noexcept] int QColor::blue() const

返回此颜色的蓝色分量。

另请参阅setBlueblueFgetRgb

[noexcept] float QColor::blueF() const

返回此颜色的蓝色分量。

另请参阅setBlueFbluegetRgbF

[static] QStringList QColor::colorNames()

返回包含Qt已知的颜色名称的QStringList

另请参阅预定义颜色

[noexcept] QColor QColor::convertTo(QColor::Spec colorSpec) const

根据colorSpec指定的格式创建一个颜色的副本。

另请参阅spectoCmyktoHsvtoRgbisValid

[noexcept] int QColor::cyan() const

返回此颜色的青色分量。

另请参阅cyanFgetCmykCMYK颜色模型

[noexcept] float QColor::cyanF() const

返回此颜色的青色分量。

另请参阅cyangetCmykFCMYK颜色模型

[noexcept] QColor QColor::darker(int factor = 200) const

返回一个较暗(或较亮)的颜色,但不会改变此对象。

如果factor大于100,此函数返回一个较暗的颜色。将factor设置为300将返回亮度为三分之一的颜色。如果factor小于100,返回的颜色较亮,但我们推荐使用lighter()函数进行此目的。如果factor为0或负数,返回值未指定。

此函数将当前颜色转换为HSV,将值(V)分量除以因子,并将颜色转换回原始颜色规范。

另请参阅lighter() 和 isValid()。

[静态] QColor QColor::fromCmyk(int c, int m, int y, int k, int a = 255)

静态便利函数,返回由给定的CMYK颜色值构建的QColorc(青色),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颜色值构建的QColorc(青色),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颜色值构建的QColorh(色调),s(饱和度),l(亮度),和a(透明通道,即透明度)。

sla的值必须在0-255的范围内;h的值必须在0-359的范围内。

另请参阅toHsl(),fromHslF(),isValid(),以及HSL颜色模型

[静态] QColor QColor::fromHslF(float h, float s, float l, float a = 1.0)

这是一个重载函数。

静态便利函数,返回由HSV颜色值构建的QColorh(色调),s(饱和度),l(亮度),和a(透明通道,即透明度)。

所有值必须在0.0-1.0的范围内。

另请参阅toHsl(),fromHsl(),isValid(),以及HSL颜色模型

[静态] QColor QColor::fromHsv(int h, int s, int v, int a = 255)

静态便利函数,返回由HSV颜色值构建的QColorh(色调),s(饱和度),v(值),和a(透明通道,即透明度)。

sva的值都必须在0-255的范围内;h的值必须在0-359的范围内。

另请参阅 toHsv(), fromHsvF(), isValid() 以及 HSV 色彩模型.

[静态] QColor QColor::fromHsvF(float h, float s, float v, float a = 1.0)

这是一个重载函数。

静态便利函数,返回由HSV颜色值构建的QColorh(色调),s(饱和度),v(值),和a(透明通道,即透明度)。

所有值必须在0.0-1.0的范围内。

另请参阅 toHsv(), fromHsv(), isValid() 以及 HSV 色彩模型.

[静态 noexcept] QColor QColor::fromRgb(QRgb rgb)

静态便利函数,返回由给定 QRgbrgb 构成的 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)

静态便利函数,返回由给定的 QRgba64rgba64 构成的 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)

静态方便函数,返回由给定的QRgbrgba构建的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

将指出由cmyka的内容设为颜色的CMYK值中的青色、品红色、黄色、黑色和alpha通道(透明度)组件。

可以通过使用cyan(),magenta(),yellow(),black()和alpha()函数分别检索这些组件。

另见 setCmyk()和CMYK颜色模型

void QColor::getCmykF(float *c, float *m, float *y, float *k, float *a = nullptr) const

将指出由cmyka的内容设为颜色的CMYK值中的青色、品红色、黄色、黑色和alpha通道(透明度)组件。

这些组件可以通过使用cyanF(),magentaF(),yellowF(),blackF()和alphaF()函数分别检索。

另见 setCmykF()和CMYK颜色模型

void QColor::getHsl(int *h, int *s, int *l, int *a = nullptr) const

将指向hsla的内容设置为颜色HSL值的色调、饱和度、亮度和alpha通道(透明度)分量。

可以使用hslHue()、hslSaturation()、lightness()和alpha()函数分别检索这些分量。

另请参阅getHslFsetHslHSL颜色模型

void QColor::getHslF(float *h, float *s, float *l, float *a = nullptr) const

将指向hsla的内容设置为颜色HSL值的色调、饱和度、亮度和alpha通道(透明度)分量。

可以使用hslHueF()、hslSaturationF()、lightnessF()和alphaF()函数分别检索这些分量。

另请参阅getHslsetHslFHSL颜色模型

void QColor::getHsv(int *h, int *s, int *v, int *a = nullptr) const

将指向hsva的内容设置为颜色HSV值的色调、饱和度、值和alpha通道(透明度)分量。

可以使用hue()、saturation()、value()和alpha()函数分别检索这些分量。

另请参阅setHsvHSV颜色模型

void QColor::getHsvF(float *h, float *s, float *v, float *a = nullptr) const

将指向hsva的内容设置为颜色HSV值的色调、饱和度、值和alpha通道(透明度)分量。

可以使用hueF()、saturationF()、valueF()和alphaF()函数分别检索这些分量。

另请参阅setHsvHSV颜色模型

void QColor::getRgb(int *r, int *g, int *b, int *a = nullptr) const

将指向rgba的内容设置为颜色RGB值的红色、绿色、蓝色和alpha通道(透明度)分量。

可以使用red()、green()、blue()和alpha()函数分别检索这些分量。

另请参阅rgb()和setRgb()。

void QColor::getRgbF(float *r, float *g, float *b, float *a = nullptr) const

将指向rgba的内容设置为颜色RGB值的红色、绿色、蓝色和alpha通道(透明度)分量。

可以使用redF()、greenF()、blueF()和alphaF()函数分别检索这些分量。

另请参阅rgb()和setRgb()。

[noexcept] int QColor::green() const

返回此颜色的绿色颜色成分。

setGreen()greenF()getRgb()

[noexcept] float QColor::greenF() const

返回此颜色的绿色颜色成分。

setGreenF()greengetRgbF

[noexcept] int QColor::hslHue() const

返回此颜色的 HSL 色调颜色成分。

hslHueF()hsvHue()getHsl()HSL 颜色模型

[noexcept] float QColor::hslHueF() const

返回此颜色的 HSL 色调颜色成分。

hslHue()hsvHueF()getHslF

[noexcept] int QColor::hslSaturation() const

返回此颜色的 HSL 饱和度颜色成分。

hslSaturationF()hsvSaturation()getHsl()HSL 颜色模型

[noexcept] float QColor::hslSaturationF() const

返回此颜色的 HSL 饱和度颜色成分。

hslSaturation()hsvSaturationF()getHslFHSL 颜色模型

[noexcept] int QColor::hsvHue() const

返回此颜色的 HSV 色调颜色成分。

hueF()hslHue()getHsv()HSV 颜色模型

[noexcept] float QColor::hsvHueF() const

返回此颜色的色调颜色成分。

hue()hslHueF()getHsvFHSV 颜色模型

[noexcept] int QColor::hsvSaturation() const

返回此颜色的 HSV 饱和度颜色成分。

saturationFs()hslSaturation()getHsv()HSV 颜色模型

[noexcept] float QColor::hsvSaturationF() const

返回此颜色的 HSV 饱和度颜色成分。

saturation()hslSaturationF()getHsvFHSV 颜色模型

[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,然后将颜色转换回原始颜色规范。

另请参阅 darker()和 isValid

[noexcept] int QColor::lightness() const

返回此颜色的亮度颜色分量。

另请参阅 lightnessF()和 getHsl()。

[noexcept] float QColor::lightnessF() const

返回此颜色的亮度颜色分量。

另请参阅 value()和 getHslF()。

[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(),hslSaturationsaturationFgetHsv() 和 HSV颜色模型

[noexcept] float QColor::saturationF() const

返回此颜色的 HSV 饱和度颜色成分。

颜色会隐式转换为HSV格式。

另请参阅 hsvSaturationFhslSaturationFsaturationgetHsvF() 和 HSV颜色模型

void QColor::setAlpha(int alpha)

将此颜色的alpha设为alpha。整数alpha的范围是0-255。

另请参阅 alphaalphaF透明混合绘制

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。

另请参阅 getHsl() 和 setHslF()。

void QColor::setHslF(float h, float s, float l, float a = 1.0)

设置 HSL 颜色的亮度;h 是色调,s 是饱和度,l 是亮度,而 a 是 HSL 颜色的 alpha 分量。

所有值必须在0.0-1.0的范围内。

另请参阅 getHslF() 和 setHsl().

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范围内指定。

另请参阅 red(),redF,和 setRgb().

void QColor::setRedF(float red)

将此颜色的红色成分设为 red。如果 red 超出0.0-1.0范围,颜色模型将改为 ExtendedRgb

另请参阅 redF(),red,和 setRgbF().

void QColor::setRgb(int r, int g, int b, int a = 255)

将RGB值设置为 rgb,并设置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值。

另请参阅 setRgba() 和 rgba64().

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

返回颜色是如何指定的。

另请参阅SpecconvertTo()。

[noexcept] QColor QColor::toCmyk() const

创建并返回基于此颜色的CMYK QColor

另请参阅fromCmyk(),convertTo(),isValid(),和CMYK颜色模型

[noexcept] QColor QColor::toExtendedRgb() const

基于此颜色创建并返回一个扩展的RGB QColor

另请参阅toRgbconvertTo

[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

返回此颜色的黄色颜色组件。

另请参阅 yellowgetCmykF,以及 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 成分。

另请参阅 qRgbQColor::alpha

[constexpr] uint qAlpha(QRgba64 rgba64)

以 8 位值的形式返回 rgba64 的 alpha 成分。

另请参阅 QRgba64::alpha8QColor::alpha

[constexpr] int qBlue(QRgb rgb)

返回 ARGB 四元组 rgb 的蓝色分量。

另请参阅 qRgbQColor::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、rgb)。

另见 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在芬兰和其他国家/地区的商标。所有其他商标归其各自所有者所有。