Qt样式表使用总结1,常用样式表设置方法

1,简介

Qt中给窗体或控件添加样式表的方法,大体有以下几种:

1,在UI设计器(即Qt Designer)内添加,右键控件"改变样式表"或直接在属性内输入

2,对窗口或控件调用 setStyleSheet 接口

3,qApp->setStyleSheet 对整个app设置样式

4,项目中,一般将样式表内容写到文本文件,程序启动时再通过方法2或3加载

这样的好处是方便集中管理,修改样式也不用重新编译,还避免在代码中书写过长字符串不方便。

2,做法及效果

1,在ui设计器设置样式

该方法的好处是可以在输入样式表内容时检查格式是否有效,

另外可以直接预览窗口看到应用样式后的效果,如下图。

学习时可以使用该方法,一般项目内尽量少用,

因为以后很容易找不到写了哪里了,难以维护。

2,对窗口或控件调用setStyleSheet

比如对按钮调用:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //可以看到在代码中设置样式,为了方便阅读,使用了繁琐的Tab和换行
    //因此除了特殊地方需要在代码追加修改样式,项目里一般建议在文本文件内写样式表
    ui->btn2->setStyleSheet("QPushButton{\
                                background:#EE6AA7;\
                                border:1px solid #8B7E66;\
                                border-radius:5px;\
                                color:white;\
                            }\
                            QPushButton:hover{\
                                background:#FF6EB4;\
                            }\
                            QPushButton:pressed{\
                                background:#CD6090; \
                            }");
}

也可直接对MainWindow setStyleSheet, 一次性填入各种不同控件的样式。

因为样式表是可以继承到子窗口的

3,对app整体调用

样式便会对程序所有该类型控件生效:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    //QApplication对整体应用程序设置样式
    a.setStyleSheet("QPushButton{\
                                background:#1C86EE;\
                                border:1px solid #8B7E66;\
                                border-radius:5px;\
                                color:white;\
                            }\
                            QPushButton:hover{\
                                background:#1E90FF;\
                            }\
                            QPushButton:pressed{\
                                background:#1874CD; \
                            }");

    return a.exec();
}

4,从样式文件加载

一般我希望把样式文件写到.css后缀的文本文件中,因为qss与css的语法结构差不多,

一些文本编辑工具(如notepad++)可以识别.css格式,内容会显示得比较友好,方便编辑。

建议把这些css文件放到程序目录的单独的qss文件夹内,就像配置文件一样。

示例演示了给一个对话框加载样式文件的做法。

LoadQssFile函数由于是从一个公用的功能类抽出来的,所以窗口是作为参数传进去的。

#include "DlgQSS.h"
#include "ui_DlgQSS.h"

#include <QFile>

DlgQSS::DlgQSS(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::DlgQSS)
{
    ui->setupUi(this);

    //加载外部样式表文件
    LoadQssFile(this,"DlgQSS.css");
}

DlgQSS::~DlgQSS()
{
    delete ui;
}

bool DlgQSS::LoadQssFile(QWidget* w,QString fileName)
{
    //样式表文件
    QString qssFile = QCoreApplication::applicationDirPath() + "\\qss\\" + fileName;
    QFile file(qssFile);
    if (file.open(QFile::ReadOnly))
    {
        QString qss = file.readAll();
        w->setStyleSheet(qss);
        file.close();
        return true;
    }
    return false;
}

4,示例工程源码

源码下载:

链接:https://pan.baidu.com/s/1fij_mQgWlTPT4htarWT2Qg?pwd=3lb4 
提取码:3lb4

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

逆枫゛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值