最近在用Qt+VS开发应用程序,需要对应用程序的界面进行美化,最简单的美化方法就是使用QSS样式表,下面记录一下。
QSS样式表的资源: 传送门
准备工作
下载好QSS样式表资源
我用的版本是:VS2015+Qt5.9.4,其他版本的方法也是一样的。
使用方法
1.1 下载样式文件,解压将其放到工程路径下
解压,注意路径
1.2 向qrc文件中添加文件
双击qrc文件
添加新的空前缀 /
添加文件
把需要的都添加进去
依次添加flatwhite,lightblue,psblack等目录下的全部文件
检查文件URL是否符合规格!!
CSS文件::/qss/flatwhite.css (必须一致)
PNG文件::/qss/flatwhite/add_bottom.png (必须一致)
记住保存
程序调用
在.h文件中加上头文件
#include<QFile>
.h文件注册槽函数
private slots:
//蓝色风格
void set_blueStyle();
//白色风格
void set_whiteStyle();
//黑色风格
void set_blackStyle();
//亮蓝风格
void set_darkBlue();
//蓝色风格
void set_blue();
//银色风格
void set_silvery();
//灰色风格
void set_gray();
//红蓝风格
void set_red();
.cpp文件调用并连接信号槽
PCLVisualizer::PCLVisualizer(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//固定窗口大小
int width = this->geometry().width();
int height = this->geometry().height();
this->setFixedSize(width, height);
//加载样式表
QString qss;
QFile file(":/qssghtblue.css");
if (file.open(QFile::ReadOnly))
{
//用readAll读取默认支持的是ANSI格式,如果不小心用creator打开编辑过了很可能打不开
qss = QLatin1String(file.readAll());
QString paletteColor = qss.mid(20, 7);
qApp->setPalette(QPalette(QColor(paletteColor)));
qApp->setStyleSheet(qss);
file.close();
}
connect(ui.actionStyleBule, &QAction::triggered, this, &PCLVisualizer::set_blueStyle);
connect(ui.actionStyleWhite, &QAction::triggered, this, &PCLVisualizer::set_whiteStyle);
connect(ui.actionStyleBlack, &QAction::triggered, this, &PCLVisualizer::set_blackStyle);
connect(ui.actiondarkBlue, &QAction::triggered, this, &PCLVisualizer::set_darkBlue);
connect(ui.actionSilvery, &QAction::triggered, this, &PCLVisualizer::set_silvery);
connect(ui.actionBlue, &QAction::triggered, this, &PCLVisualizer::set_blue);
connect(ui.actionGray, &QAction::triggered, this, &PCLVisualizer::set_gray);
connect(ui.actionred, &QAction::triggered, this, &PCLVisualizer::set_red);
//界面风格设置
void PCLVisualizer::initQssStyle(QColor color)
{
QString cssStr;
if (color == Qt::white)
cssStr = ":/qss/flatwhite.css";
else if (color == Qt::black)
cssStr = ":/qss/psblack.css";
else if (color==Qt::blue)
{
cssStr = ":/qssghtblue.css";
}
else if (color == Qt::darkBlue)
{
cssStr = ":/qss/test.css";
}
else if (color == Qt::Key_Blue)
{
cssStr = ":/qss/blue.css";
}
else if (color == Qt::darkGray)
{
cssStr = ":/qss/lightgray.css";
}
else if (color == Qt::darkRed)
{
cssStr = ":/qss/silvery.css";
}
else if (color == Qt::red)
{
cssStr = ":/qss/red.css";
}
else
{
return;
}
//加载样式表
QString qss;
QFile file(cssStr);
if (file.open(QFile::ReadOnly))
{
//用readAll读取默认支持的是ANSI格式
//如果不小心用creator打开编辑过了很可能打不开
qss = QLatin1String(file.readAll());
QString paletteColor = qss.mid(20, 7);
qApp->setPalette(QPalette(QColor(paletteColor)));
qApp->setStyleSheet(qss);
file.close();
}
}
//蓝色风格
void PCLVisualizer::set_blueStyle()
{
this->initQssStyle(Qt::blue);
}
//白色风格
void PCLVisualizer::set_whiteStyle()
{
this->initQssStyle(Qt::white);
}
//黑色风格
void PCLVisualizer::set_blackStyle()
{
this->initQssStyle(Qt::black);
}
//亮蓝风格
void PCLVisualizer::set_darkBlue()
{
this->initQssStyle(Qt::darkBlue);
}
//蓝色风格
void PCLVisualizer::set_blue()
{
this->initQssStyle(Qt::Key_Blue);
}
//银色风格
void PCLVisualizer::set_silvery()
{
this->initQssStyle(Qt::darkGray);
}
//灰色风格
void PCLVisualizer::set_gray()
{
this->initQssStyle(Qt::darkRed);
}
//红蓝风格
void PCLVisualizer::set_red()
{
this->initQssStyle(Qt::red);
}
注意: 根据自己的界面程序将代码中的PCLVisualizer换成自己命名的名称便可
有什么疑问可以在评论中留言讨论