Qt界面美化方法(使用QSS样式表,内有资源下载链接)

最近在用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换成自己命名的名称便可

有什么疑问可以在评论中留言讨论

  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

whb1815

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值