实现简单的换肤功能
开发环境:QT5 ,mingw
需求:用户选择后换肤
换肤范围,主界面颜色,以及控件颜色
用到的东西包括combox 的根据索引发送信号,QFile读取文件,QSS的使用。
核心代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QFile>
#include<QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 主界面加载初始QSS样式表,一开始加载skin1
QFile file(":/skin1.qss");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&file);
QString styleSheet = in.readAll();
file.close();
qApp->setStyleSheet(styleSheet);
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_comboBox_currentIndexChanged(int index)
{
qDebug()<<"121";
// 读取QSS文件
QString styleSheet;
if (index == 0) {
QFile file(":/skin1.qss");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&file);
styleSheet = in.readAll();
file.close();
}
} else if (index == 1) {
QFile file(":/skin2.qss");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&file);
styleSheet = in.readAll();
file.close();
}
}
// 如果成功读取样式表,应用它
if (!styleSheet.isEmpty()) {
qApp->setStyleSheet(""); // 清除之前的样式表
qApp->setStyleSheet(styleSheet); // 应用新的样式表
}
}
QPushButton{
background-color: rgb(255, 255, 127);
border:none;
}
QLineEdit{
background-color: black; color: white;
}
MainWindow{
background-color:lightblue;
}
QPushButton{
background-color: rgb(0,153,117);
border:none;
}
QLineEdit{
background-color: white; color: black;
}
MainWindow{
background-color:rgb(147,115,72);
}
#QT##C++#

