vs2022+qt 通过qss文件给QPushButton控件设置样式
新建QSS文件
1) 在Qt项目文件夹中,“右键”---“新建”---“文本文档”,并将其改成.qss后缀
在里面写入样式信息:
/* 正常状态或者鼠标松开按钮的状态,按钮颜色 */ QPushButton { background-color:rgb(240,255,255); color: rgb(0, 0, 2); border-style: outset; border-color: beige; border-radius: 10px; } /* hover按钮悬浮,鼠标悬浮在按钮上的状态,按钮颜色 */ QPushButton:hover { background-color:rgb(14, 220, 0); border-radius: 10px; color: rgb(0, 0, 0); } /* 鼠标按下按钮时的状态,按钮颜色 */ QPushButton:checked { background-color:rgb(14, 170, 79); border-radius: 10px; color: rgb(255, 255, 0); }
然后双击项目中的资源文件 ,先添加一个前缀:
然后添加这个qss文件:
完整的使用代码:
.h文件:
#pragma once #include <QtWidgets/QWidget> #include "ui_qtwidgetsapplication1.h" #include <QPushButton> #include <QFile> #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #endif class QtWidgetsApplication1 : public QWidget { Q_OBJECT public: QtWidgetsApplication1(QWidget* parent = nullptr); ~QtWidgetsApplication1(); QString ReadQssFile(const QString& filePath); private: Ui::QtWidgetsApplication1Class* ui; };
.cpp:
#include "qtwidgetsapplication1.h" QtWidgetsApplication1::QtWidgetsApplication1(QWidget* parent) : QWidget(parent) { ui->setupUi(this); // 设置窗口标题 setWindowTitle("测试窗口"); // 重设大小 resize(400, 500); // x轴向右移动500,y轴向下移动200 move(500, 200); // 设置背景色 setStyleSheet("QWidget{background-color:beige}"); QPushButton* closeButton = new QPushButton(tr("关掉我吧!"), this); // 创建指定父对象的QPushButton对象,使用this作为父对象 不用单独delete内存,因为设置了父对象,详细见qt对象树 closeButton->setFixedSize(100, 30); // 大小设置 closeButton->move(220, 0); // 右上角 // 样式设置 closeButton->setStyleSheet(ReadQssFile(":/QtWidgetsApplication1/QPushButton.qss")); // 点击时关闭 connect(closeButton, &QPushButton::clicked, this, &QtWidgetsApplication1::close); } QtWidgetsApplication1::~QtWidgetsApplication1() { delete ui; ui = nullptr; } QString QtWidgetsApplication1::ReadQssFile(const QString& filePath) { QString strStyleSheet = ""; QFile file(filePath); file.open(QFile::ReadOnly); if (file.isOpen()) { strStyleSheet = QLatin1String(file.readAll()); } return strStyleSheet; }
效果: