通过加载 QSS 文件的方式美化 QT 界面
1 配置工程
在进行配置之前,建议先在工程的根目录下新建一个
.qss
文件,方便后面的添加
1.打开目标工程,选中此工程,鼠标右键单击
Add New
![](https://img-blog.csdnimg.cn/44d73f69912a4518b6b4bde12bde43bd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGlhbnl2SG9u,size_20,color_FFFFFF,t_70,g_se,x_16)
2.随后弹出如下界面,左侧选中
Qt
,紧接着右侧选中Qt Resource File
,最后单击Choose...
![](https://img-blog.csdnimg.cn/02135f8a4744454b88ac6fc27409a87e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGlhbnl2SG9u,size_20,color_FFFFFF,t_70,g_se,x_16)
3.随后这个界面即是填写文件的名称及路径,一般路径默认即可,而名称根据自己的喜好进行定义,这里为
resource
,最后单击Next
![](https://img-blog.csdnimg.cn/b2feb5d64b8d4c929b51cf8f3eb63784.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGlhbnl2SG9u,size_20,color_FFFFFF,t_70,g_se,x_16)
4.这个界面一般不做修改,单击
Finish
即可
![](https://img-blog.csdnimg.cn/04916265453e45cd9789fc82279adb0c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGlhbnl2SG9u,size_20,color_FFFFFF,t_70,g_se,x_16)
5.第一步,单击
Add Prefix
,其中Prefix
的值建议修改为/
,其他不做修改;第二步,单击Add Files
,随后弹出一个窗口,默认打开当前工程的根目录,选择需要的.qss
文件(如果事先没有新建或存在,需要新建),最后,单击打开
即可。
![](https://img-blog.csdnimg.cn/d1d1dc75a8644aaa978076fc0417e3f1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGlhbnl2SG9u,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/d59907a26efa45eebd01415bd07f2b71.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGlhbnl2SG9u,size_20,color_FFFFFF,t_70,g_se,x_16)
6.添加完成
![](https://img-blog.csdnimg.cn/a85f299d31c8435daed269c1f7b0cbf4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAdGlhbnl2SG9u,size_20,color_FFFFFF,t_70,g_se,x_16)
2 编写加载程序
在这里,有两种方式加载 QSS
文件,其原理都一样,步骤如下:
- 读取
QSS
文件 - 加载
Style
1.编写一个类,通过静态函数进行加载
#include "mainwindow.h"
#include <QApplication>
// 加载样式类
class LoadStyle
{
public:
// 静态加载样式函数
static void setStyle(const QString &styleFilePath)
{
QFile styleFile(styleFilePath);
if(styleFile.open(QFile::ReadOnly))
{
qApp->setStyleSheet(styleFile.readAll());
styleFile.close();
}
// 不成功弹出对话框
else
{
QMessageBox::warning(NULL, "warning", "Open failed", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 加载QSS样式
LoadStyle::setStyle(":/stylesheet.qss");
MainWindow w;
w.show();
return a.exec();
}
2.在主函数内直接加载
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFile file(":/stylesheet.qss");
if(file.open(QFile::ReadOnly))
{
QString styleSheet = QLatin1String(file.readAll());
a.setStyleSheet(styleSheet);
file.close();
}
else
{
QMessageBox::warning(NULL, "warning", "Open failed", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}
MainWindow w;
w.show();
return a.exec();
}