简述
Qt下使用qss进行界面美化,可以按功能或者界面分成多个.qss文件,把所有qss文件放到同一个文件夹下,通过读取文件夹下所有qss文件设置到qApp,并且后续增加qss不需要修改此部分代码,只需把新增的qss文件放到此文件夹下即可。
正文
1.新建文件夹存放qss文件,文件名随意,此处文件夹名为hq10qss,下面存放着qss文件
2.在Qt项目里添加资源文件qss.qrc,把qss文件加到里面,目录结构如下
单个文件的路径为 “:/hq10qss/adminpage.qss”,此时只需在“:/hq10qss/”这个文件夹下获取到所有qss文件,读取并设置即可。
3.新建一个类LoadStyle,用来读取并设置qss
.h文件如下
#ifndef LOADSTYLE_H
#define LOADSTYLE_H
#include <QObject>
class LoadStyle : public QObject
{
Q_OBJECT
public:
explicit LoadStyle(QObject *parent = 0);
void setAllStyle();
private:
QString getAllStyle(QStringList strListStyleFiles, QString strDirPath);
};
#endif // LOADSTYLE_H
.cpp文件如下
#include "LoadStyle.h"
#include <QApplication>
#include <QDir>
#include <QFile>
LoadStyle::LoadStyle(QObject *parent) : QObject(parent)
{
}
void LoadStyle::setAllStyle()
{
QString strDirPath = ":/hq10qss/";
QStringList strListStyleFiles = QDir(strDirPath).entryList(QDir::Files);
QString strStyle = getAllStyle(strListStyleFiles, strDirPath);
qApp->setStyleSheet(strStyle);
}
QString LoadStyle::getAllStyle(QStringList strListStyleFiles, QString strDirPath)
{
if (!strDirPath.endsWith("/"))
{
strDirPath.append("/");
}
QString strStyle;
for (auto strFileName : strListStyleFiles)
{
QFile fileRead(strDirPath + strFileName);
if (fileRead.open(QFile::ReadOnly))
{
strStyle += fileRead.readAll();
}
fileRead.close();
}
return strStyle;
}
4.在main.cpp里,创建LoadStyle的对象,并调用setAllStyle()
#include "LoadStyle.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 加载并设置 qss
LoadStyle loadStyle;
loadStyle.setAllStyle();
Widget w;
w.show();
return a.exec();
}