背景
QT的GUI开发过程中,窗体以及窗体控件默认都是系统基本样式,QT提供了QSS可以让程序界面变的好看,变得高大上。本文只从技术实现角度进行阐述。
编写QSS
在程序目录中新建一个stylesheet目录,在stylesheet目录下创建一个qss文件,为了可以在qt creator左侧的项目文件中能看到这个文件,我们可以修改项目的pro文件,如下:
OTHER_FILES += \
stylesheet/common.qss \
如果希望在程序发布运行时可以修改样式,那么就不要把qss放到资源文件中,可以通过自动拷贝的设置,把stylesheet目录复制到输出目录中,具体在pro文件中添加如下内容:
# 增加文件拷贝,只设置一次就行
CONFIG += file_copies
# 以下为拷贝stylesheet目录,其中前面的stylesheet是临时变量,如果要复制多个目录,则每个目录的临时变量不要相同
stylesheet.files = $$PWD/stylesheet
stylesheet.path = $$DESTDIR
COPIES += stylesheet
然后就像编写css一样编辑qss,以下内容是对按钮的样式进行统一设置。
/*按钮基本样式*/
QPushButton
{
background-color:#67a6f8;
border-radius:5px;
color:white;
height:36px;
}
/*按钮鼠标悬停样式*/
QPushButton:hover
{
background-color:#5f9ae6;
color:white;
}
/*对话框按钮的最小宽度*/
QMessageBox QPushButton
{
min-width:60px;
}
/*对话框按钮组中按钮的最小宽度*/
QDialogButtonBox QPushButton
{
min-width:60px;
}
注意:qss中的注释请使用/*…*/,不要用//,不然会导致程序无法识别stylesheet。
在程序中加载qss
代码如下:
#include <QApplication>
#include <QDebug>
#include <QFile>
#include <QFont>
//#include "mainwindow.h"
#include "formplccomunication.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QString qssFilePath = QString(a.applicationDirPath() + "/stylesheet/common.qss");
if (QFile::exists(qssFilePath))
{
QFile qssFile = QFile(qssFilePath);
if (qssFile.open(QFile::ReadOnly))
{
QString qssFileContent = qssFile.readAll();
a.setStyleSheet(qssFileContent);
qDebug() << "成功读取common.qss文件内容...";
qssFile.close();
}
}
QApplication::setFont(QFont("宋体", 12)); //设置全局字体
FormPlcComunication formPlcComunication;
formPlcComunication.show();
return a.exec();
}