QT笔记

获取颜色对应的字符串

2023-06-19  本文已影响0人  雯饰太一

获取颜色的字符串

QString GetQColorStr(const QColor& t_color)
{
    int c_red = t_color.red();
    int c_green = t_color.green();
    int c_blue = t_color.blue();
    int c_alpha = t_color.alpha();

    QString color_str;
    color_str = "0x" + QString("%1%2%3%4").
        arg(t_color.alpha(), 2, 16, QLatin1Char('0'))
        .arg(t_color.red(), 2, 16, QLatin1Char('0'))
        .arg(t_color.green(), 2, 16, QLatin1Char('0'))
        .arg(t_color.blue(), 2, 16, QLatin1Char('0'));

    return color_str;
}

或者使用QT自带的方法获取ARGB字符串,以下是一个示例:

#include <QColor>
#include <QDebug>

int main() {
    QColor color(Qt::red);  // 创建一个红色 QColor 对象

    // 获取 ARGB 字符串表示颜色的值
    QString argbString = color.name(QColor::HexArgb);

    qDebug() << argbString;  // 打印 ARGB 字符串

    return 0;
}

根据字符串获取颜色

QColor GetQClrByStr(QString t_color)
{
    unsigned int argb = t_color.toUInt(bool(), 16);
    return QColor(
        (argb & 0x00FF0000) >> 16,
        (argb & 0x0000FF00) >> 8,
        (argb & 0x000000FF),
        (argb & 0xFF000000) >> 24);
}

获取当前样式中的字体颜色

首先获取对应widget的调色板QPalette,然后获取调色板中的字体颜色

GPT问答

QColor可以使用多种颜色空间,包括:

  1. RGB颜色空间:使用红(R)、绿(G)、蓝(B)三个颜色通道来表示颜色。

  2. HSV颜色空间:使用色相(H)、饱和度(S)、亮度(V)三个维度来表示颜色。HSV颜色空间适用于人类对颜色的感知特点。

  3. CMYK颜色空间:使用青(C)、洋红(M)、黄(Y)、黑(K)四个颜色通道来表示颜色。CMYK颜色空间适用于打印领域。

  4. 颜色名称:可以使用预定义的颜色名称,如"red"、"yellow"、"green"等来表示颜色。

  5. 十六进制颜色码:使用六位十六进制数字表示颜色,如"#FF0000"表示红色、"#00FF00"表示绿色、"#0000FF"表示蓝色等。

QColor是一个用于管理颜色的类,它可以用于设置和获取RGB值、色相、饱和度、亮度等属性,也可以用于创建渐变和调色板。

以下是一些QColor的常用方法和示例用法:

  1. 设置颜色:
color = QColor(255, 0, 0)  # 红色
color = QColor("#FF0000")  # 红色
color.setRgb(255, 0, 0)   # 红色
color.setNamedColor("red") # 红色
  1. 获取颜色信息:
# 获取颜色的RGB值
r, g, b, a = color.getRgb()
# 获取颜色的16进制表示
hex_str = color.name()
# 获取颜色的色相、饱和度、亮度
h, s, l, a = color.getHsl()
  1. 判断颜色是否合法:
is_valid = color.isValid()
  1. 创建渐变:
# 创建线性渐变
gradient = QLinearGradient(0, 0, 0, height)
gradient.setColorAt(0, QColor(255, 255, 255))
gradient.setColorAt(1, QColor(0, 0, 0))
# 创建径向渐变
gradient = QRadialGradient(center, radius)
gradient.setColorAt(0, QColor(255, 255, 255))
gradient.setColorAt(1, QColor(0, 0, 0))
  1. 创建调色板:
palette = QPalette()
palette.setColor(QPalette.Background, QColor(255, 255, 255))  # 设置背景颜色
palette.setColor(QPalette.Button, QColor(0, 0, 0))           # 设置按钮颜色
palette.setColor(QPalette.ButtonText, QColor(255, 255, 255))  # 设置按钮文字颜色
上一篇下一篇

猜你喜欢

热点阅读