Qt6教程之三(2) QT使用qss

QSS是Qt Style Sheets的缩写,中文含义是Qt样式表,它用来自定义控件外观的机制。QSS与网页中使用的CSS非常相似,可以把QSS看作是CSS在Qt领域领域的定制版本。

QSS的语法规则

选择器 {  规则定义1; 规则2; 规则n ; } ; 

如下示例:

QPushButton {
    border: 2px solid $border;
    border-radius: 9px;
    padding: 1px 10px;
    min-width: 80px;
    min-height: 34px;
}

QPushButton表示选择器,指定了QPushButton及QPushButton的子类均会受到影响,这是与CSS中不同的地方。在Qt中所有的控件在使用QSS时均遵循这个规则。

QSS的选择器类型

1.通配选择器:*  ; 匹配所有的控件
2.类型选择器:如QPushButton ,其含义是匹配所有QPushButton和其子类实例;
3.属性选择器:如QPushButton[color="red"]; 
4.类选择器:  .QPushButton ;  匹配所有QPushButton的实例;
5.ID选择器:  #button; 匹配所有id为button的控件实例;
6.后代选择器: 如QDialog QPushButton ; 所有QDialog容器中包含的QPushButton;
7.子选择器:  如QDialog > QPushButton; 所有QDialog容器下面的QPushButton;

这里并不打算讲解很多的理论,有兴趣的小伙伴可参悦其他人写得非常好的一篇博客:https://www.cnblogs.com/wangqiguo/p/4960776.html

同时也可参阅QSS官网文档:

Qt Style Sheets Reference | Qt Widgets 5.15.12

QSS在Qt程序中使用

主要通过 setStyleSheet(QString str)  函数引入,可以直接在函数里面写对于的qss内容:

#include "mainwindow.h"

#include <QPushButton>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QPushButton *bt=new QPushButton("button",this);
    bt->setStyleSheet("QPushButton{color:red;  background-color:blue;}");
}

MainWindow::~MainWindow()
{
}

也可以先把qss定义作为一个文件,后缀为.qss ,如my.qss ,

#include "mainwindow.h"

#include <QFile>
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QPushButton *bt=new QPushButton("button",this);
    //bt->setStyleSheet("QPushButton{color:red;  background-color:blue;}");

    QFile *sf;
        sf  = new QFile(":/my.qss", this);
        sf->open(QFile::ReadOnly);
        QString styleSheet = QString(sf->readAll());
        bt->setStyleSheet(styleSheet);
        sf->close();
}

MainWindow::~MainWindow()
{
}


编辑qss的神器推荐

这款神器叫QssStylesheetEditor ,支持qss语法提示,同时在写完样式之后,还能在右侧预览实时效果,详情参见如下链接:

mirrors / hustlei / QssStylesheetEditor · GitCode

总结

学习qss只需掌握其方法,对于qss相关的一些属性根据实际需求查询官方文档即可,不必全部记住。因为每个控价都有自己独特的属性与样式定义,全部记下是不可能的!

示例程序完整源码:

main.cpp

#include "mainwindow.h"

#include <QApplication>

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

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"

#include <QFile>
#include <QPushButton>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    resize(800,800);
    setWindowTitle("QSS");


    //define qss string
    QString s="QPushButton{color:red;  background-color:blue; font-size:20px; padding: 20px;}"
              "QPushButton:pressed{color:blue; background-color:yellow;}" ;

    QPushButton *bt=new QPushButton("button",this);
    bt->setGeometry(200,200,100,100);
    bt->setStyleSheet(s);

    
}

MainWindow::~MainWindow()
{
}

运行效果: 当点击按钮后,背景颜色会变为yellow ;

此篇博客内容较为简单,更多的是讲解如何使用qss的方法与技巧,之后涉及到相关属性直接查询官方文档即可!

下一篇博客链接:

Qt6教程之三(3) QtWedget自定义控件_爱折腾的业余程序员的博客-CSDN博客本篇博客主要介绍自定义控件的方法!https://blog.csdn.net/XiaoWang_csdn/article/details/129292061?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22129292061%22%2C%22source%22%3A%22XiaoWang_csdn%22%7D

上一篇博客链接: Qt6教程之三(1) Qt开发基于Windows、Linux系统的桌面软件客户端_爱折腾的业余程序员的博客-CSDN博客本篇文章主要介绍Qt的跨平台原理!https://blog.csdn.net/XiaoWang_csdn/article/details/129230190

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一种流行的跨平台应用程序开发框架,提供了丰富的工具和库,使开发人员能够轻松创建高性能的应用程序。Qt提供了许多可扩展的方式来自定义和美化应用程序,其中之一就是通过使用Qt样式表(qss)。在程序中,我们可以使用qss来定义应用程序的外观和样式,从而更好地匹配用户的期望和品味。 下面是一些qss的实例: 1.按钮样式: QPushButton { background-color: yellow; border-style: outset; border-width: 2px; border-radius: 10px; border-color: beige; font: bold 14px; min-width: 10em; padding: 6px; } 这段代码给按钮添加了黄色的背景色,4像素的凹出边框,10像素的圆角边框,浅褐色的边框和粗体14像素的字体,并在按钮上添加6像素的填充。 2.标签样式: QLabel { color: #ff4411; font-weight: bold; font-size: 12px; font-family: "Arial"; } 这段代码将标签的字体颜色设置为红色和黄色的混合色,粗体12px的字体,并使用Arial字体族。 3.字体样式: QTextEdit{ font-family:"SimSun"; font-size:14px; } 这段代码将文本编辑器的字体设置为宋体并设置字号为14。 4.滑块样式: QSlider::groove:horizontal { border: 1px solid black; height: 10px; background: grey; margin: 0px; } QSlider::handle:horizontal { background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #bbb, stop:1 white); border: 1px solid black; width: 10px; margin: -2px 0; border-radius: 3px; } 这段代码将水平滑块的滑动轨迹高度设置为10像素,背景为灰色,并使用黑色描边。滑块的句柄使用渐变颜色并具有黑色描边。滑块的宽度为10像素,并使用3像素的圆角。 这些示例只是qss样式的冰山一角。开发人员可以通过使用丰富的qss属性和样式来自定义他们的应用程序的外观和样式。qssQt应用程序创建过程中的有用工具,能够使用户界面更加美观、用户友好。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值