写点什么

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

作者:YOLO.
  • 2022 年 9 月 07 日
    河北
  • 本文字数:988 字

    阅读完需:约 3 分钟

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

前言:

在 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字符串
复制代码


发布于: 刚刚阅读数: 4
用户头像

YOLO.

关注

还未添加个人签名 2022.05.06 加入

还未添加个人简介

评论

发布
暂无评论
Qt | 关于颜色属性的使用 QColor_qt_YOLO._InfoQ写作社区