实现简单的换肤功能
开发环境: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++#