获取颜色对应的字符串
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,然后获取调色板中的字体颜色
- 在控件paintEvent中可能会用到,因为要考虑样式表的颜色一致
- 在设置QTableWidgetItem颜色和重置颜色的时候可能会用到,否则会出现样式表一改,就要调整代码的情况
- 同样的,对于QTreeWidget也会有第二种情况
GPT问答
QColor可以使用多种颜色空间,包括:
-
RGB颜色空间:使用红(R)、绿(G)、蓝(B)三个颜色通道来表示颜色。
-
HSV颜色空间:使用色相(H)、饱和度(S)、亮度(V)三个维度来表示颜色。HSV颜色空间适用于人类对颜色的感知特点。
-
CMYK颜色空间:使用青(C)、洋红(M)、黄(Y)、黑(K)四个颜色通道来表示颜色。CMYK颜色空间适用于打印领域。
-
颜色名称:可以使用预定义的颜色名称,如"red"、"yellow"、"green"等来表示颜色。
-
十六进制颜色码:使用六位十六进制数字表示颜色,如"#FF0000"表示红色、"#00FF00"表示绿色、"#0000FF"表示蓝色等。
QColor是一个用于管理颜色的类,它可以用于设置和获取RGB值、色相、饱和度、亮度等属性,也可以用于创建渐变和调色板。
以下是一些QColor的常用方法和示例用法:
- 设置颜色:
color = QColor(255, 0, 0) # 红色
color = QColor("#FF0000") # 红色
color.setRgb(255, 0, 0) # 红色
color.setNamedColor("red") # 红色
- 获取颜色信息:
# 获取颜色的RGB值
r, g, b, a = color.getRgb()
# 获取颜色的16进制表示
hex_str = color.name()
# 获取颜色的色相、饱和度、亮度
h, s, l, a = color.getHsl()
- 判断颜色是否合法:
is_valid = color.isValid()
- 创建渐变:
# 创建线性渐变
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))
- 创建调色板:
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)) # 设置按钮文字颜色