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_OBJECTpublic: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 stringQString 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

Qt6教程之三(2) QT使用qss相关推荐

  1. Qt6教程之三(3) QtWedget自定义控件

    在之前的博客中,我们使用的控件都是Qt官方提供的,对于控件的特性也只能被动地接受,为了打破这种束缚,可以按照自己的想法来定义控件. 不过自定义控件必须遵守Qt官方的一套自定义控件规则,在规则之下我们就 ...

  2. Qt6教程之三(14) 串口通信

    目录 一 串口通信相关概念介绍 二 Qt开发串口通信程序 一 串口通信相关概念介绍 串口通信(Serial Communications)在上位机控制领域非常常用,其原理是按位(bit)发送和接收字节 ...

  3. kubernetes安装_kubernetes安装教程之三:安装kubeadm

    kubernetes安装教程之三:安装kubeadm 准备安装包和镜像 安装可以使用VPN下载 ````bash yum --downloadonly --downloaddir=/opt/rpm k ...

  4. 转载:【opencv入门教程之三】:图片的载入|显示|输出

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/20537737 作者:毛星云(浅墨) ...

  5. 转载:【opencv入门教程之三】:组件结构

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/19925819 作者:毛星 ...

  6. SAP UI5 应用开发教程之三十九 - SAP UI5 应用出现白屏的一些常见错误和分析方法分享试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  7. SAP UI5 应用开发教程之三十八 - 使用 Chrome 开发者工具查看程序执行出错时的上下文信息

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  8. SAP UI5 应用开发教程之三十七 - 使用 Chrome 开发者工具 Console 面板进行元素审查试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  9. SAP UI5 应用开发教程之三十六 - 使用 Chrome 开发者工具 Elements 标签动态修改 CSS 类试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

最新文章

  1. DeepMind科学家:AI对战《星际争霸》胜算几何?
  2. 1-2 Zabbix web界面支持中文
  3. Logback日志跨线程追踪实践
  4. phpstudy免费安全检测服务_Phpstudy联合各大安全厂商为用户提供免费安全检测服务...
  5. NOI[2001]食物链
  6. java vm for mac_Java VisualVM for Mac 构建方法
  7. python 网络页面爬取
  8. 数组模拟加法(每日一练 11.30)
  9. springmvc整合fastjson
  10. UVa——110303 Common Permutation(字符串)
  11. python解压.tar.gz
  12. 保证可见性_十年程序员浅谈并发的原子性、可见性、有序性
  13. 转:多玩网总裁李学凌:在腾讯阴影下
  14. 苹果手机网页选择框 下拉框点击放大处理
  15. 网络工程师工作经验分享
  16. Flutter 卡在 Running Gradle task ‘assembleDebug‘... 的解决方法
  17. Web核心(Java技术栈、HTTP、Servlet、Request、Response)
  18. 【预训练语言模型】WKLM: Pretrained Encyclopedia: Weakly Supervised Knowledge-Pretrained Language Model
  19. [计算机组成原理,Cache总容量的计算方法]假设主存地址位数是32位,按字节编址,贮存和Cache采用全相联映射的方式,主存块大小为1个字,每字32位,采用回写法和随机替换的策略,则能存放32K字数
  20. java计算年份_如何计算Java中2个日期之间的年份和年份

热门文章

  1. 前端水印生成方案(网页水印+图片水印)
  2. Java实现多个图片转化成PDF
  3. DDR SDRAM的内部结构Cell Structure
  4. 人脸检测:经典的VJ人脸检测器(类Harr特征,积分图加速法,级联的Adaboost强分类器)
  5. python:max函数
  6. 信号偏移成为边界地区呼吸的痛
  7. css中好看常用的中文字体
  8. 语音交友app开发中的用户积分系统
  9. cba篮球暂停次数和时间_篮球比赛一节有几次暂停?
  10. 画油画,笔触的重要性原来体现在这里~