效果
配置文件
原理
加载ini中的配置文件去替换app.qss中的颜色
void QssHelper::setSkinStyle(const QString &t_name)
{
getIniFileColor(t_name);
replaceColorQssFile();
}
void QssHelper::getIniFileColor(QString t_nama)
{
QString strPath = "./qss/ini/" + t_nama + ".ini";
QSettings settings(strPath, QSettings::IniFormat);
m_strPanelColor = settings.value(QString("PanelColor")).toString();
m_strTextColor = settings.value(QString("TextColor")).toString();
m_strBorderColor = settings.value(QString("BorderColor")).toString();
m_strNormalColor = settings.value(QString("NormalColor")).toString();
m_strDarkColor = settings.value(QString("DarkColor")).toString();
m_strHighColor = settings.value(QString("HighColor")).toString();
m_strCustomColor1 = settings.value(QString("CustomColor1")).toString();
m_strCustomColor2 = settings.value(QString("CustomColor2")).toString();
m_strCustomColor3 = settings.value(QString("CustomColor3")).toString();
m_strCustomColor4 = settings.value(QString("CustomColor4")).toString();
}
void QssHelper::replaceColorQssFile()
{
QString qss;
QFile file("./qss/app.qss");
if (file.open(QFile::ReadOnly)) {
qss = QLatin1String(file.readAll());
}
qss.replace("PANELCOLOR", m_strPanelColor );
qss.replace("TEXTCOLOR", m_strTextColor );
qss.replace("BORDERCOLOR", m_strBorderColor);
qss.replace("NORMALCOLOR", m_strNormalColor);
qss.replace("DARKCOLOR", m_strDarkColor );
qss.replace("HIGHCOLOR", m_strHighColor );
qss.replace("CUSTOMCOLOR1",m_strCustomColor1);
qss.replace("CUSTOMCOLOR2",m_strCustomColor2);
qss.replace("CUSTOMCOLOR3",m_strCustomColor3);
qss.replace("CUSTOMCOLOR4",m_strCustomColor4);
QString PaletteColor = qss.mid(13, 7);
qApp->setPalette(QPalette(QColor(PaletteColor)));
qApp->setStyleSheet(qss);
}
自定义颜色
ui->widget->setProperty("CustomColor", 1);
ui->label->setProperty("CustomColor", 1);
ui->pushButton->setProperty("CustomColor", 2);
下载地址
图标颜色更改
配合下面这款下工具
png图像颜色替换,用于软件皮肤样式_给我来个鸡腿的博客-CSDN博客