Qt | 关于颜色属性的使用 QColor

2,175 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

前言:

在Qt中,用QColor类来封装颜色功能。QColor类提供了基于RGB、HSV或CMYK值的颜色。颜色通常用RGB(红色、绿色和蓝色)组件来指定,也可以用HSV(色相、饱和度和值)组件来指定,还可以用CMYK(青色、品红、黄色和黑色)组件来指定。除了这三个组件,还可以用颜色名称来指定颜色。颜色名称为SVG1.0中的颜色名称。

颜色的创建:

  • QColor类的构造函数是基于RGB值来创建颜色的,如果想要基于HSV值或者CMYK值创建,可以调用toHsv()函数和toCmyk()函数进行转换。
  • fromRgb()、fromHsv()、fromCmyk()函数用来使用指定的值创建颜色。
  • convertTo()函数用来以所需格式返回颜色的副本。
  • setRgb()、setHsv()、setCmyk()函数可以实现颜色转换。
  • lighter()和darker()函数可以实现获得比指定颜色较浅或者较深的颜色。
  • isValid()函数可以判断一个给定的颜色是否有效。

QColor常用的五种构造函数:

  1. QColor(int r, int g, int b, int a=……);通过传入r、g、b三个分量来创建一个颜色对象。最后一个参数a表示alpha-channel(alpha通道,表示颜色透明度的意思)。 例: QColor blue(0, 0, 255, 255);//创建一个不透明的蓝色值

  2. QColor(QRgb color);用QRgb对象作为参数来创建一个QColor对象。QRgb是一个重定义的Qt类型,等同于unsigned int。它的格式如#AARRGGBB,其中AA是alpha通道值,表示一个颜色的透明度,也可以不带透明度,默认为不透明。 例: QColor red("#FF0000");//创建一个红色值

  3. QColor(const QString &name);用字符串name来创建一个QColor对象。功能类似于函数setNameColor(); 例: QColor("green");//创建一个绿色值

  4. QColor(const char* name);用字符串name来创建一个QColor对象。 例: QColor("green");//创建一个绿色值

  5. QColor(const QColor &color);用一个QColor对象来创建一个QColor对象。 例: QColor color("green"); QColor(color);

QColor、QString和QRgb相互转换:

- QColor转QRgb:

QColor c(255,0, 255);
QRgb mRgb = qRgb(c.red(), c.green(), c.blue());

- QRgb转QColor:

QColor mColor = QColor(mRgb);

- QRgb转QString: (由于QRgb就是一个unsigned int类型,因此相当于把unsigned int转为QString)

QString mRgbStr = QString::number(mRgb, 16);//转为十六进制字符串

- QString转QColor:(先将QString转为QRgb,再利用构造函数QColor(QRgb color)进行转换)

QColor color(mRgbStr.toUInt(NULL, 16));//mRgbStr是一个QRgb值得QString字符串