首页 > 其他分享 >QtWidgets样式表教程(附代码)

QtWidgets样式表教程(附代码)

时间:2024-06-17 17:00:20浏览次数:13  
标签:教程 项目 示例 QTabBar QtWidgets 样式表 QWidget 选择器

Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面和嵌入式系统开发。Qt Widgets是其中一个重要的模块,提供了创建经典桌面风格应用程序的基础。Qt Widgets支持样式表(Style Sheets),使开发者可以通过类似于CSS的方式对界面进行美化和定制。本文将详细介绍Qt Widgets的样式表的使用方法和技巧。

结尾附完整的样式表测试Demo代码链接…

什么是Qt Widgets样式表

Qt Widgets的样式表(Style Sheet)类似于Web开发中的CSS,可以用于控制Qt应用程序中控件的外观。通过样式表,开发者可以统一管理控件的样式,简化代码,提升开发效率。

样式表的基本语法

Qt Widgets样式表的语法与CSS非常相似,主要包括选择器、属性和属性值。下面是一个基本示例:

QPushButton {
    background-color: #3498db;
    color: white;
    border-radius: 5px;
    padding: 5px 10px;
}

QPushButton:hover {
    background-color: #2980b9;
}

这个样式表为所有的QPushButton控件设置了背景颜色、文本颜色、圆角边框和内边距。当按钮被悬停时,背景颜色会发生变化。

选择器

Qt样式表中涉及的选择器介绍:

通用选择器(通配选择器)

语法
* {
	background-color: red;
}

示例效果

image.png

语法解释

匹配所有QWidget类的实例对象,包含QWidget直接实例的对象和由QWidget派生类实例的对象。

一般不会用该选择器进行处理,因为其匹配的对象太多,所有按钮、QListWidget、QTreeWidget、QTableWidget等等都会被匹配。

类型选择器

语法
QWidget {
	background-color: red;
}

示例效果

image.png

语法解释

匹配所有QWidget类实例化的对象,包含由QWidget派生类实例化的对象。

QWidget { … }
用QWidget的类型选择器和上面的通用选择器所达到的效果是一样的。

类选择器

语法
.QWidget {
	background-color: red;
}

示例效果

image.png

语法解释

匹配QWidget直接实例化的对象,由QWidget类的派生类实例化的对象是不会被匹配上的。

属性选择器

语法
QPushButton[checkable=false] {
	background-color: yellow;
}
QPushButton[checkable=true] {
	background-color: blue;
}

示例效果

image.png

语法解释

匹配QPushButton类,且checkable属性分别为truefalse的实例对象。

ID选择器

语法
#child_window {
	background-color: red;
}

示例效果

image.png

语法解释

匹配ObjectNamechild_window的实例对象。

后代选择器

语法
#ParentWidget QWidget {
	background-color: red;
}

示例效果

image.png

示例解释

匹配ObjectNameParentWidget的窗口对象中,子对象(只要是ParentWidget的后代,无论层级)的类型为QWidget的对象。

子选择器

语法
#ParentWidget > QWidget {
	background-color: red;
}

示例效果

image.png

示例解释

ObjectNameParentWidget的窗口对象中,只匹配类型为QWidget的直接子对象,子对象的子对象是不会被匹配的。

后代选择器和子选择器的区别就是,后代选择器是匹配所有后代,不论层级,而子选择器是只匹配子对象这一层级。

伪元素(子控件)选择器

语法
QComboBox::drop-down {
	background-color: red;
}

示例效果

image.png

示例解释

匹配QComboBox控件的伪元素对象(特定的子对象)。

伪元素列举
::add-line添加一行的按钮QScrollBar
::add-page手柄(滑块)和add-lineQScrollBar
::branch的分支指示符QTreeView
::chunk进度块QProgressBar
::close-button关闭按钮QDockWidget或标签QTabBar
::corner两个滚动条之间的角QAbstractScrollArea
::down-arrow向下箭头QComboBoxQHeaderView(排序指示器),QScrollBar或者QSpinBox
::down-button的向下按钮QScrollBarQSpinBox
::drop-down下拉按钮QComboBox
::float-button浮动按钮QDockWidget
::groove的凹槽QSlider
::indicator指标QAbstractItemView, AQCheckBox, AQRadioButton,可检查QMenu项目或可检查的QGroupBox
::handle手柄(滑块)QScrollBar, AQSplitterQSlider
::icon图标QAbstractItemViewQMenu
::item一个项目QAbstractItemView, AQMenuBar, AQMenuQStatusBar
::left-arrow左箭头QScrollBar
::left-corner左角QTabWidget。例如,此控件可用于控制左角小部件在QTabWidget
::menu-arrow箭头QToolButton带有菜单。
::menu-button菜单按钮QToolButton
::menu-indicator菜单指示器QPushButton
::right-arrow右箭头QMenuQScrollBar
::pane窗格(框架)QTabWidget
::right-corner右上角QTabWidget。例如,此控件可用于控制右上角小部件在QTabWidget
::scroller的滚动条QMenu或者QTabBar
::section的部分QHeaderView
::separator分隔符QMenu或者QMainWindow
::sub-line按钮减去一行QScrollBar
::sub-page手柄(滑块)和sub-lineQScrollBar
::tab标签QTabBar或者QToolBox
::tab-bar标签栏QTabWidget。此子控件仅用于控制QTabBar在 - 的里面QTabWidget. 使用::tab子控制。
::tear泪液指标QTabBar
::tearoff撕下指示器QMenu
::text的文本QAbstractItemView
::title标题QGroupBoxQDockWidget
::up-arrow向上箭头QHeaderView(排序指示器),QScrollBarQSpinBox
::up-button的向上按钮QSpinBox

伪状态选择器

语法
QPushButton:hover {
	background-color: yellow;
}

示例效果

image.png

示例解释

匹配伪状态(悬浮状态)的按钮对象。

伪状态列举
:active当小部件驻留在活动窗口中时设置此状态。
:adjoins-item此状态设置为::branchQTreeView与某项相邻。
:alternate在绘制行时,每隔一行都会设置此状态QAbstractItemView什么时候QAbstractItemView::alternatingRowColors() 设置为 true。
:bottom该项目位于底部。例如,QTabBar其标签位于底部。
:checked该项目已选中。例如,checked的状态QAbstractButton
:closable可以关闭这些项目。例如,QDockWidgetQDockWidget::DockWidgetClosable功能已开启。
:closed项目处于关闭状态。例如,未展开的项目位于QTreeView
:default该项目是默认项目。例如,default QPushButton或默认操作QMenu
:disabled该项目是disabled
:editableQComboBox是可编辑的。
:edit-focus该项目具有编辑焦点(参见QStyle::State_HasEditFocus)。此状态仅适用于Qt Extended应用程序。
:enabled该项目是enabled
:exclusive该菜单项属于专属菜单项组。例如,专属菜单项中的菜单项QActionGroup
:first该项目是列表中的第一个。例如,QTabBar
:flat物品是扁平的。例如,flat QPushButton
:floatable这些项目可以浮动。例如,QDockWidgetQDockWidget::DockWidgetFloatable功能已开启。
:focus该产品具有input focus
:has-children该项目有子项。例如,QTreeView有子项。
:has-siblings该项目有同级项目。例如,QTreeView那个兄弟姐妹。
:horizontal该项目具有水平方向
:hover鼠标悬停在该项目上。
:indeterminate该项目处于不确定状态。例如,QCheckBox或者QRadioButtonpartially checked
:last该项目是(列表中的)最后一个项目。例如,QTabBar
:left该项目位于左侧。例如,QTabBar其标签位于左侧。
:maximized项目已最大化。例如,最大化的QMdiSubWindow
:middle项目位于列表的中间。例如,不在列表开头或结尾的选项卡QTabBar
:minimized项目已最小化。例如,最小化的QMdiSubWindow
:movable该项目可以移动。例如,QDockWidgetQDockWidget::DockWidgetMovable功能已开启。
:no-frame该项目没有框架。例如,无框架QSpinBox或者QLineEdit
:non-exclusive该商品属于非独家商品组。例如,非独家商品组中的菜单项QActionGroup
:off对于可以切换的项目,这适用于处于“关闭”状态的项目。
:on对于可以切换的项目,这适用于处于“开”状态的小部件。
:only-one该项目是(列表中)唯一的项目。例如,QTabBar
:open项目处于打开状态。例如,QTreeViewQComboBox或者QPushButton菜单打开。
:next-selected选中列表中的下一个项目。例如,选中QTabBar位于此项旁边。
:pressed正在使用鼠标按下该项目。
:previous-selected已选择列表中的上一个项目。例如,QTabBar位于所选选项卡的旁边。
:read-only该项目被标记为只读或不可编辑。例如,只读QLineEdit或不可编辑QComboBox
:right该项目位于右侧。例如,QTabBar其标签位于右侧。
:selected该项目被选中。例如,QTabBar或所选项目QMenu
:top该项目位于顶部。例如,QTabBar其标签位于顶部。
:unchecked该项目是unchecked
:vertical該項目具有隱立方向。
:window该小部件是一个窗口(即顶级小部件)

Demo演示

效果图

image.png

Demo说明

该Demo演示了常用控件的样式表使用方法。除了演示样式表外,该项目还包含了以下功能:

  1. 无边框窗口组件
  2. 自定义Icon字体库

链接

下面两个链接分别是github和gitee对应仓库的地址:
LeoLei8060_github
LeoLei8060_gitee

标签:教程,项目,示例,QTabBar,QtWidgets,样式表,QWidget,选择器
From: https://blog.csdn.net/LeoLei8060/article/details/139748680

相关文章

  • 生成式 AI 服务应用之Langchain 和 DashScope Reranker 彻底改变您的文档检索过程(教程
    介绍在当今信息泛滥的时代,找到所需的确切文档似乎是一件不可能完成的事情。传统搜索引擎经常让您在无关内容中苦苦挣扎,浪费宝贵的时间。但不要担心,因为有一对强大的组合正在等待彻底改变您的搜索体验:Langchain和DashScopeReranker。推荐文章《如何使用CodeLlama......
  • 小白的Python+Anaconda+vscode安装教程(win11系统手把手教学)
    python下载安装python下载安装过程下载地址:https://www.python.org/![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/33bd022a0d104a22b9e8caf7abb4e294.png我这里选择了3.7.9版本选中刚才下载的.exe文件,右键-打卡上一个页面点击customizinstallation后......
  • MySQL 5.7 安装教程(Win 10)
    转自:https://www.cnblogs.com/swjian/p/11907600.htmlMySQL5.7下载官网下载(不推荐使用):https://dev.mysql.com/downloads/mysql/清华镜像站下载(推荐):https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.27-winx64.zipMySQL5.7解压将下载完的zi......
  • typora下载安装、激活教程
    目录介绍基本功能使用教程高级功能下载安装激活关闭软件每次启动时的已激活弹窗去除软件左下角“未激活”提示介绍Typora是一款功能强大的Markdown编辑器,它以其简洁的界面设计和高效的文本编辑能力受到许多用户的青睐。Typora的主要特点在于其“所见即所得”......
  • MoneyPrinterPlus:AI自动短视频生成工具,详细使用教程
    MoneyPrinterPlus是一款使用AI大模型技术,一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上的轻松赚钱工具。之前有出过一期基本的介绍,但是后台收到有些小伙伴说,不知道如何使用。今天我将会手把手的详细介绍如何使用MoneyPrinterPlus快速......
  • 雷电模拟器改真机保姆级教程,游戏搬砖党必备!
    游戏工作室今天分享最新防封电脑模拟器改真机技术,适用于所有模拟器搬砖游戏,有效防止电脑模拟器封禁问题。游戏搬砖玩家可以像使用真机一样流畅地操作游戏,电脑模拟器可以模拟真机的运行环境,让游戏服务器难以察觉到运行设备的差异,从而起到防封的作用更加安全。重要提示:要多开模拟......
  • Beyond Compare软件最新版下载及详细安装教程
    ​BeyondCompare是一款不可多得的专业级的文件夹和文件对比工具,使用它可以很方便地对比出两个文件夹或者文件的不同之处,相差的每一个字节用颜色加以表示,查看方便,支持多种规则对比,是程序工程师以及上班族必备的有效辅助工具。安装包获取地址:beyondcomparewin版:​​......
  • BarTender软件下载附加详细安装教程
    BarTender是美国海鸥科技推出的一款优秀的条码打印软件,应用于WINDOWS95、98、NT、XP、2000、2003和3.1版本,产品支持广泛的条形码码制和条形码打印机,不但支持条形码打印机而且支持激光打印机,还为世界知名品牌条形码打印机开发了增强驱动。​安装包获取......
  • React 使用 Zustand 详细教程
    前言Redux、MobX和ContextAPI等技术的存在,使得管理大型应用的状态变得更加可行。本教程要深入探讨的是Zustand——一个极简且高效的状态管理库,详细介绍如何在React项目中使用Zustand来管理状态。什么是Zustand?Zustand是一个简单、小体积(只有不到1kB)且性能优......
  • 文字游侠:AI一键创作高质量图文,小白也能上手!附上渠道和指导教程!
    近期发现了一款极为实用的AI文章生成工具——“文字游侠”,这款工具能为自媒体文章创作提升极大的效率。不妨先来看看下面关于文字游侠的视频简单讲解介绍:利用’文字游侠‘在今日头条上发布图文,每天10分钟迅速爆款!那么,如何使用【文字游侠】工具呢?关于文字游侠的具体用......