QT调色板 StyleSheet qtcolor 样式表 制作 调色板
本文主要介绍制作了一个页面 利用QtStyleSheet 配置颜色RGB数值 便于找到自己想要的颜色对应的RGB参数
一、制作ui界面
ui界面如图建立
我是用LineEdit建立方块显示颜色和颜色数值,然后用horizontalSlider来对应颜色的RGB数值
所需控件名字按照我的写,可以直接复制代码,如果更改了名字请在代码段自行更改。
除了提及的控件,别的控件名字任意。
二、控件设置
这里要把3个horizontalSlider的最大数值改为255
然后把3个LineEdit设置为只读
三、建立槽函数,编辑代码
切换到ui编辑界面,右键点击horizontalSlider,点击转到槽,然后选择valueChange(int)
复制代码进槽函数里面,要注意,红色对应的槽函数设置的是rgb里red的数值,QColor color(r,0,0);
绿色和蓝色分别代表g和b,按照这个原则复制粘贴并修改好绿色和蓝色的槽函数
// 获取RGB的值
int r = value;
int g = ui->lineEdit_rgb_g->text().toInt();
int b = ui->lineEdit_rgb_b->text().toInt();
// 创建QColor对象
QColor color(r,0,0);
QColor rgb_color(r, g, b);
// 显示rgb的值
ui->lineEdit_rgb_r->setText(QString::number(value));
ui->lineEdit_rgb->setText(QString("%1,%2,%3").arg(r).arg(g).arg(b));
// 根据亮度设置字体色
double gray = (0.299 * r + 0.587 * g + 0.114 *b) / 255;//公式是在网上查到的
QString rgb_textColor = gray > 0.5 ? "black" : "white";
// 设置样式表
ui->lineEdit_rgb_r->setStyleSheet(QString("QLineEdit { background-color: %1; color: white; }").arg(color.name()));
ui->lineEdit_rgb->setStyleSheet(QString("QLineEdit { background-color: %1; color: %2; }").arg(rgb_color.name()).arg(rgb_textColor));
四、程序运行
运行程序后拖动进度条会有如下效果:
最后生成的rgb数值可以用户复制使用
五、思考
1.通过上一步可以得到我们想要的颜色,那我们如何把调色板得到的颜色用到我们的控件或者页面主题上呢
2.通过设置颜色如何做到给我们的应用换皮肤
3.如何做出qq音乐或者网易云音乐那种细腻的换肤操作