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;
}

 

 效果:

 

  

posted @ 2023-05-13 15:00  安静点--  阅读(628)  评论(0编辑  收藏  举报