QT::QColor

时间:2025-03-08 19:33:56
在单色模式下,QT对应的色调取值会返回-1,
如果你传递的色调值太大,QT会自动缩小以匹配色调值域,HUE(360~720)会当做0处理 ,HUE(540)处理成180
另外在标准HSV模式下,QT位像素叠加绘制技术提供了一个透明度阀值的属性。


HSL颜色模式:
HSL模式类似于HSV模式,于HSV不同的是,HSL有一个明暗参数,明暗参数可以再黑色和白色之间来回切换,
在夜间室外显示为灰色或者黑色,在白天如果在强光下观察则呈现五彩多姿的颜色,俗称曝光。


CMYK颜色模式:
通常RGB和HSV颜色模式被用于电脑显示器用于展示图形图像,CMYK颜色模式通常被用于应刷机或打印复制。
CMYK是由4个颜色组成的组件,四个颜色取值都被限定在0~255,: cyan (C)蓝绿色, magenta (M)紫红色, yellow (Y)黄色, black (K)黑色
他们又被称为消元色,CMYK颜色模式通常创建于一个白色的平面,然后在CMYK组件上应用消元色属性。当用cyan,magenta,yellow三中颜色
去结合black颜色时,其中一种或多种颜色会中和其他的颜色,当以不同比率组合着四种颜色时,着三中颜色会创建一个色彩光谱图实体。


混合100%比例的cyna,magenta,yellow时会中和黑色,但是用墨汁调制时这个结果并不令人满意,特别是随着晾干时间的增加,打印时颜色会很模糊。
由于这个原因,黑色是在专业打印时添加进来以起到调和颜色的作用。
另外在标准CMYK模式中,QT为像素叠加绘制提供了一个透明度阀值。


成员类型描述:
指定的颜色类型可以为RGB 或者HSV 或者CMYK 或者HSL
Constant Value
QColor::Rgb 1
QColor::Hsv 2
QColor::Cmyk 3
QColor::Hsl 4
QColor::Invalid 0

成员函数描述:
QColor::QColor ()
默认情况下用RGB(0,0,0)初始化一个无效的颜色组件对象,无效的颜色组件是指改颜色不适合用于创建窗口系统的。
透明度阀值未指定。

QColor::QColor ( int r, int g, int b, int a = 255 )
用RGB(r,g,b)初始化一个颜色组件对象,改颜色不透明。
如果给定的任何一个参数无效,则返回的颜色对象也无效

QColor::QColor ( QRgb color )
通过给定的颜色组件创建一个相对应的颜色组件对象,该颜色对象忽略透明度,而且被设置成实心类型。

QColor::QColor ( const QString & name )
通过一个给定的颜色名称,创建一个和函数setNamedColor()返回类型同等的颜色对象组件。
如果给定的颜色名称无法从color_name_list找到,则返回的颜色组件对象无效。

QColor::QColor ( const char * name )
通过一个给定的颜色名称,创建一个和函数setNamedColor()返回类型同等的颜色对象组件。
如果给定的颜色名称无法从color_name_list找到,则返回的颜色组件对象无效
该函数与上一个函数唯一的不同在于传递的参数类型不同。

QColor::QColor ( const QColor & color )
复制构造函数

QColor::QColor ( Qt::GlobalColor color )
这是一个重载的函数。通过给定的颜色值创建一个颜色组件对象。

bool QColor::allowX11ColorNames () [static]
如果给定的颜色名称可以再X11颜色数据库中找到则返回true,默认情况下,该函数返回false
附注:这个函数仅支持X11平台。

int QColor::alpha () const
以整数的形式返回该颜色组件对象(this)的透明度阀值

qreal QColor::alphaF () const
以浮点数的形式返回该颜色组件对象(this)的透明度阀值

int QColor::black () const
以整数的形式返回该颜色组件对象的黑色颜色取值。

qreal QColor::blackF () const
以浮点数的形式返回该颜色组件对象的黑色颜色取值

int QColor::blue () const
以整数的形式返回该颜色组件对象的蓝色颜色取值

qreal QColor::blueF () const
以浮点数的形式返回该颜色组件对象的蓝色颜色取值

QStringList QColor::colorNames () [static]
以字符串序列的形式返回该颜色组件对象内所包含的QT能正常解析的颜色名称

QColor QColor::convertTo ( Spec colorSpec ) const
用给定的颜色格式返回该颜色组件对象的一份拷贝

int QColor::cyan () const
以整数的形式返回该颜色组件对象的cyan颜色取值

qreal QColor::cyanF () const
以浮点数的形式返回该颜色组件对象的cyan颜色取值

QColor QColor::darker ( int factor = 200 ) const
返回该颜色组件对象的明亮程度的一个拷贝,不修改this对象
如果参数factor大于100函数返回一个暗黑颜色,把参数factor设置成300则返回一个3式渐变形式的明亮色
如果参数factor小于100,则函数返回一个比当前颜色更亮的颜色,通常推荐用函数lighter()执行此目的
如果参数factor为0或者负数值,则返回结果为定义。
该函数可以很方便的在RGB和HSV模式间进行转换,通过factor因子可以把该颜色组件的Value消除从而还原成RGB模式

QColor QColor::fromCmyk ( int c, int m, int y, int k, int a = 255 ) [static]
静态成员函数,通过给定的c (cyan), m (magenta), y (yellow), k (black), (alpha-channel or transparency).
可以很方便的创建一个CMYK模式的颜色组件对象
所有的参数值必须限定在0~255之间

QColor QColor::fromCmykF ( qreal c, qreal m, qreal y, qreal k, qreal a = 1.0 ) [static]
这是一个重载的静态成员函数
和上面一个函数唯一的不同点在于所有的参数都是以浮点数的形式给出,
因此,所有的参数值都必须限定在0.0~1.0之间。

QColor QColor::fromHsl ( int h, int s, int l, int a = 255 ) [static]
该静态成员函数可以很方便的根据给定的参数创建一个HSL颜色组件对象
附注:参数s , l , a 必须限定在0~255之间,参数 h 必须限定在0~359之间
该函数在QT4.6中有介绍

QColor QColor::fromHslF ( qreal h, qreal s, qreal l, qreal a = 1.0 ) [static]
这是一个重载的静态成员函数
和上面有一个函数唯一的不同点在于,所有的参数均是浮点数,所以
所有的参数值必须限定在0.0~1.0之间

QColor QColor::fromHsv ( int h, int s, int v, int a = 255 ) [static]
该静态成员函数可以根据给定的参数值返回一个HSV模式的颜色组件对象
附注:参数 s, v, a 必须限定在0~255之间,参数h必须限定在0~359之间

QColor QColor::fromHsvF ( qreal h, qreal s, qreal v, qreal a = 1.0 ) [static]
这是一个重载的静态成员函数
和上面一个函数唯一不同点在于所有的参数都是以浮点数的形式给出
所以,所有的参数必须限定在0.0~1.0之间

QColor QColor::fromRgb ( QRgb rgb ) [static]
该函数可以很方便的用给定的RGB值返回一个颜色组件对象
alpha会被自动忽略,通常会被设置成25,给函数fromRgba()函数传递一个QRgb值可以返回一个alpha取值。

QColor QColor::fromRgb ( int r, int g, int b, int a = 255 ) [static]
该静态成员函数可以横方便的根据给定的参数返回一个QColor颜色组件对象
所有的参数值必须限定在0~255之间

QColor QColor::fromRgbF ( qreal r, qreal g, qreal b, qreal a = 1.0 ) [static]
该静态成员函数可以横方便的根据给定的参数返回一个QColor颜色组件对象
所有的参数值必须限定在0.0~1.0之间

QColor QColor::fromRgba ( QRgb rgba ) [static]
静态成员函数,可以很方便的通过给定的RGB参数值翻返回一个QColor颜色组件对象
不同于函数fromRgb(),透明度阀值在给定的QRgb元祖中已经被定义。

void QColor::getCmyk ( int * c, int * m, int * y, int * k, int * a = 0 )
通过设置指针c,m,y,k,a的值来修改CMYK组件中对应的 cyan, magenta, yellow, black,alpha-channel (transparency) 取值
这些组件值可以通过调用 cyan(), magenta(), yellow(), black() , alpha()返回

void QColor::getCmykF ( qreal * c, qreal * m, qreal * y, qreal * k, qreal * a = 0 )
该函数和上面一个函数唯一的不同点在于所有的参数都是以浮点数的形式给出
CMYK组件中的元素值可以通过调用 cyanF(), magentaF(), yellowF(), blackF(), alphaF()得到

void QColor::getHsl ( int * h, int * s, int * l, int * a = 0 ) const
通过传递的指针h,s,l,a可以修改HSL组件中对应的 hue, saturation, lightness,alpha-channel (transparency) 取值
HSL组件的元素值可以通过调用hueHsl(), saturationHsl(), lightness() ,alpha()得到

void QColor::getHslF ( qreal * h, qreal * s, qreal * l, qreal * a = 0 ) const
该函数和上面一个函数的区别在于所有的参数都是浮点数
HSL组件的元素值可以通过调用hueHslF(), saturationHslF(), lightnessF(),alphaF()得到

void QColor::getHsv ( int * h, int * s, int * v, int * a = 0 ) const
通过传递的指针参数h,s,v,a可以修改HSV组件中对应元素hue, saturation, value,alpha-channel (transparency) 的取值
HSV组件对象中的元素值可以通过调用 hue(), saturation(), value(), alpha()得到。

void QColor::getHsvF ( qreal * h, qreal * s, qreal * v, qreal * a = 0 ) const
该函数和上面一个函数唯一的区别在于所有的参数都是用浮点数形式给出的
HSV组件对象中的元素值可以通过调用 hueF(), saturationF(), valueF(),alphaF()得到

void QColor::getRgb ( int * r, int * g, int * b, int * a = 0 ) const
通过指针参数r,g,b,a来设置HSV颜色组件对象中hue, saturation, value, alpha-channel (transparency)的取值
这些组件元素值可以通过分别调用hueF(),saturationF(),valueF()而得到。

void QColor::getRgb ( int * r, int * g, int * b, int * a = 0 ) const
通过指针参数r,g,b,a来设置RGB颜色组件对象中hue, saturation, value, alpha-channel (transparency)的取值
这些组件元素值可以通过调用 red(), green(), blue() ,alpha()而得到。

void QColor::getRgbF ( qreal * r, qreal * g, qreal * b, qreal * a = 0 ) const
这个函数与上面一个函数唯一的不同点在于所给定的参数类型全部为浮点型
这些组件元素值可以通过调用 redF(), greenF(), blueF(),alphaF()而得到

int QColor::green () const
返回该颜色组件中对应的绿色成分值

qreal QColor::greenF () const
用浮点数的形式返回该颜色组件中对应的绿色成分值

int QColor::hslHue () const
以整数的形式返回该HSL颜色组件中对应的色调取值

qreal QColor::hslHueF () const
以浮点数的形式返回该HSL颜色组件中对应的色调取值

int QColor::hslSaturation () const
以整数的形式返回该HSL颜色组件中对应的饱和度取值

qreal QColor::hslSaturationF () const
以浮点数的形式返回该HSL颜色组件中对应的饱和度取值

int QColor::hsvHue () const
以整数的形式返回该HSV颜色组件中对应的色调取值

qreal QColor::hsvHueF () const
以浮点数的形式返回该HSV颜色组件中对应的色调取值

int QColor::hsvSaturation () const
以整数的形式返回该HSV颜色组件中对应的饱和度取值

qreal QColor::hsvSaturationF () const
以浮点数的形式返回该HSV颜色组件中对应的饱和度取值

int QColor::hue () const
以整数的形式返回该颜色组件中对应的色调取值,该颜色组件可以隐式的转换为HSV模式

qreal QColor::hueF () const
以浮点数的形式返回该颜色组件中对应的色调取值,该颜色组件可以隐式的转换为HSV模式

bool QColor::isValid () const
判断该颜色是否有效,有效则返回true,否则返回false

bool QColor::isValidColor ( const QString & name ) [static]
如果参数Name是一个合法的颜色名称并且可以用于初始化一个颜色组件对象则返回true,否则返回false
这个函数与setNameColor()所运用的算法是类似的。
这个函数在QT4.7中有介绍

QColor QColor::lighter ( int factor = 150 ) const
返回一个暗黑或者明亮的颜色副本,不修改源颜色
如果参数factor大于100,函数返回一个更亮的颜色
把参数factor置为150则颜色明亮度增加50%左右
如果参数factor小于100则返回一个暗色,我们推荐使用darker()来达到返回暗色的效果。
如果factor为0或者负数值,则结果值未定义
该函数可以横方便的在RGB和HSV中进行转换,只要在HSV组件中去掉V值则可以把该颜色还原成RGB格式

int QColor::lightness () const
返回一个颜色组件的亮色副本。

qreal QColor::lightnessF () const
以浮点数形式返回一个颜色组件的亮色副本

int QColor::magenta () const
返回CMYK模式下M的取值

qreal QColor::magentaF () const
以浮点数的形式返回在CMYK模式下M的取值

QString QColor::name () const
以"RRGGBB"的格式返回颜色名称,

int QColor::red () const
以整数的形式返回RGB模式下red的取值

qreal QColor::redF () const
以浮点数的形式返回RGB模式下red的取值

QRgb QColor::rgb () const
返回一个RGB颜色组件,默认情况下alpha成员元素被置为255,即不透明

QRgb QColor::rgba () const
返回当前颜色的RGB四元组,其中包含了alpha元素值。Rgba(r,g,b,a).
对于一个无效的颜色,返回的Rgb组件中的alpha元素值是未定义的。

int QColor::saturation () const
用整数的形式返回该颜色中饱和度的取值
该颜色可以隐式的转换为HSV模式

qreal QColor::saturationF () const
用浮点数的形式返回该颜色组件中对应的饱和度元素的取值
该颜色可以隐式的转换为HSV模式

void QColor::setAllowX11ColorNames ( bool enabled ) [static]
如果参数为enabled则允许函数setNamedColor()在X11颜色数据库中搜寻相关的颜色名称,
默认情况下,setNamedColor()函数式不会搜寻X11颜色数据库的。
附注:该函数仅对X11 系统平台有效

void QColor::setAlpha ( int alpha )
把该颜色组件对象中对应的QT::alpha元素值取值为整形参数alpha所给定的值
该值必须是一个有效值,必须限定在0~255之间

void QColor::setAlphaF ( qreal alpha )
把该颜色组件对象中对应的QT::alpha元素值取值为浮点数参数alpha所给定的值
该值必须是一个有效值,必须限定在0.0~1.0之间

void QColor::setBlue ( int blue )
把该颜色组件对象中对应的QT::blue元素取值为整形参数blue所给定的值
该整型值必须是一个有效值,必须限定在0~255之间

void QColor::setBlueF ( qreal blue )
把该颜色组件对象中对应的QT::blue元素取值为浮点数参数blue所给定的值
该整型值必须是一个有效值,必须限定在0.0~1.0之间

void QColor::setCmyk ( int c, int m, int y, int k, int a = 255 )
设定CMYK颜色组件中对应的元素 c (cyan), m (magenta), y (yellow), k (black), a (alpha-channel, . transparency)
所有的参数值必须限定在0~255

void QColor::setCmykF ( qreal c, qreal m, qreal y, qreal k, qreal a = 1.0 )
设定CMYK颜色组件中对应的元素 c (cyan), m (magenta), y (yellow), k (black), a (alpha-channel, . transparency)
所有的参数值必须限定在0.0~1.0

void QColor::setGreen ( int green )
把该颜色组件对象中对应的QT::green元素取值为整形参数green所给定的值
该整型值必须是一个有效值,必须限定在0~255之间

void QColor::setGreenF ( qreal green )
把该颜色组件对象中对应的QT::green元素取值为浮点数参数green所给定的值
该整型值必须是一个有效值,必须限定在0.0~1.0之间

void QColor::setHsl ( int h, int s, int l, int a = 255 )
设定HSL模式下该颜色组件中对应的色调(hue),饱和度(saturation),明亮(lightness),透明度(alpha)
饱和度(QT::saturation)和透明度(QT::alpha)的取值必须限定在0~255之间,
色调(QT::hue)的取值必须大于-1

void QColor::setHslF ( qreal h, qreal s, qreal l, qreal a = 1.0 )
设定HSL模式下该颜色组件中对应的色调(hue),饱和度(saturation),明亮(lightness),透明度(alpha)
所有的参数值必须限定在0.0~1.0之间

void QColor::setHsv ( int h, int s, int v, int a = 255 )
设定HSV模式下该颜色组件中对应的色调(hue),饱和度(saturation),明亮(lightness),透明度(alpha)
饱和度(QT::saturation)和透明度(QT::alpha)的取值必须限定在0~255之间,
色调(QT::hue)的取值必须大于-1

void QColor::setHsvF ( qreal h, qreal s, qreal v, qreal a = 1.0 )
设定HSV模式下该颜色组件中对应的色调(hue),饱和度(saturation),明亮(lightness),透明度(alpha)
所有的参数值必须限定在0.0~1.0之间

void QColor::setNamedColor ( const QString & name )
设定RGB组件的颜色名称,他们必须是以下几种格式形式:
#RGB (each of R, G, and B is a single hex digit)
#RRGGBB
#RRRGGGBBB
#RRRRGGGGBBBB
一份来至因特网合作团队提供的SVG颜色关键字清单定义了一系列的颜色名称,例如"steelblue" , "gainsboro"
这些颜色名称可以用于任何一个系统平台,另外这些颜色名称定义和QT::GlobalColor所定义的颜色名称枚举清单是不同的
比如"green"和QT::green不是指同一种颜色。
X11平台:如果allowX11ColorNames()返回true则该名称被视为合法的,详细的合法颜色名称使用
可以通过调用XParseColor()进行查看
如果该名称无法被QT解析则被视为无效的

void QColor::setRed ( int red )
设定颜色组件中QT::red元素的取值,参数red必须限定在0~255

void QColor::setRedF ( qreal red )
设定颜色组件中QT::red元素的取值,参数red必须限定在0.0~1.0

void QColor::setRgb ( int r, int g, int b, int a = 255 )
设定Rgba(r,g,b,a)组件中各个元素的取值,所有的参数值必须限定在0~255

void QColor::setRgb ( QRgb rgb )
重载函数,alpha被设定为255,即不透明

void QColor::setRgbF ( qreal r, qreal g, qreal b, qreal a = 1.0 )
设定Rgba(r,g,b,a)组件中各个元素的取值,所有的参数值必须限定在0.0~1.0

void QColor::setRgba ( QRgb rgba )
设定Rgba(r,g,b,a)组件中各个元素的取值

Spec QColor::spec () const
返回一个指定的颜色

QColor QColor::toCmyk () const
创建并返回CMYK模式下(*this)颜色对象的一个副本,功能类似于复制构造函数。

QColor QColor::toHsl () const
创建并返回HSL模式下(*this)颜色对象的一个副本,功能类似于复制构造函数。

QColor QColor::toHsv () const
创建并返回HSV模式下(*this)颜色对象的一个副本,功能类似于复制构造函数。

QColor QColor::toRgb () const
创建并返回RGB模式下(*this)颜色对象的一个副本,功能类似于复制构造函数。

int QColor::value () const
返回颜色组件元祖的数值形式,比如返回一个RGB(0,225,0)或者其他模式的。

qreal QColor::valueF () const
以浮点数形式返回颜色组件元祖的数值形式,比如返回一个RGB(0.0, 225.0 ,0.0)或者其他模式的

int QColor::yellow () const
返回该颜色组件对象中QT::yellow元素的取值

qreal QColor::yellowF () const
以浮点数类型返回该颜色组件对象中QT::yellow元素的取值

QColor::operator QVariant () const
以QVariant类型的形式返回一种颜色组件

bool QColor::operator!= ( const QColor & color ) const
如果(*this)颜色对象组件中对应的RGB和QT::alpha不等于参数color所给定的则返回true
否则返回false

QColor & QColor::operator= ( Qt::GlobalColor color )
赋值构造函数

bool QColor::operator== ( const QColor & color ) const
如果(*this)颜色对象组件中对应的RGB和QT::alpha等于参数color所给定的则返回true
否则返回false

相关的非成员类型:
typedef QRgb;
把ARGB定义成"#AARRGGBB"格式的四元组,是unsigned int 的类型重定义。
AGRB类型可以用于指定颜色是否透明,默认情况下QT::alpha被设定为255,即不透明

int qAlpha ( QRgb rgba )
从ARGB四元组中返回QT::alpha的取值

int qBlue ( QRgb rgb )
从ARGB四元组中返回QT::blue的取值

int qGray ( int r, int g, int b )
从RGB三元祖中返回QT::gray的取值
QT::gray的取值可以用这个公式计算得出:(r * 11 + g * 16 + b * 5)/32.

int qGray ( QRgb rgb )
从ARGB四元祖中返回QT::gray的取值
QT::gray的取值可以用这个公式计算得出:(r * 11 + g * 16 + b * 5)/32. QT::alpha被忽略

int qGreen ( QRgb rgb )
从ARGB四元祖中返回QT::green的取值

int qRed ( QRgb rgb )
从ARGB四元祖中返回QT::red的取值

QRgb qRgb ( int r, int g, int b )
用给定的参数值,返回ARGB四元组(255,r,g,b).

QRgb qRgba ( int r, int g, int b, int a )
用给定的参数返回ARGB四元组

QDataStream & operator<< ( QDataStream & stream, const QColor & color )
向输出缓冲流中写入颜色组件对象值
QDataStream & operator>> ( QDataStream & stream, QColor & color )
从输如缓冲流中写读取颜色组件对象值