Qt 的 Qss使用

2023-10-27

Qt 的 Qss 是一种用于定义用户界面的样式表语言。它可以用来定义控件的颜色、字体、边框、背景等样式,可以很方便的实现自定义的样式效果。

Qss 的基本语法和 CSS 类似,主要是由选择器和样式属性构成。

选择器
选择器用来指定要样式化的控件,选择器可以使用控件的名称、类型、ID、类、父子关系等来进行定位。常见的选择器有:

类型选择器: QPushButton
类选择器: .mybutton
ID 选择器: #mybutton
属性选择器: QWidget[enabled=“false”]
父子选择器: QListWidget > QListWidgetItem
样式属性
在 Qt 的 Qss 中,样式属性可以分为两类:控件属性和子控件属性,其中控件属性用于设置控件自身的样式,子控件属性用于设置控件的子控件的样式。

常用的控件属性和样式如下:

样式属性 描述
background 控件背景色
border 控件边框
color 控件文本颜色
font-size 控件字体大小
font-family 控件字体
padding 内边距
margin 外边距
text-align 控件文本对齐方式
text-indent 控件文本缩进
opacity 控件透明度
常用的子控件属性和样式如下:

样式属性 描述
QScrollBar:vertical 竖向滚动条
QScrollBar:horizontal 横向滚动条
QScrollBar::handle 滚动条滑块
QScrollBar::add-page 滚动条向后翻页按钮
QScrollBar::sub-page 滚动条向前翻页按钮
QScrollBar::add-line 滚动条向后滚动按钮(小箭头)
QScrollBar::sub-line 滚动条向前滚动按钮(小箭头)
QComboBox QAbstractItemView 下拉框的列表视图
QComboBox QAbstractItemView::item 下拉框的列表项
示例
下面是一个简单的 Qss 样式示例:

QPushButton {
background: #00bfff;
color: #fff;
border: 2px solid #fff;
font-size: 24px;
padding: 4px 8px;
margin: 4px;
}

QLineEdit {
background: #fff;
color: #000;
border: 2px solid #00bfff;
padding: 4px 8px;
margin: 4px;
}

QComboBox QAbstractItemView {
background: #fff;
color: #000;
border: 2px solid #00bfff;
padding: 4px 8px;
margin: 4px;
}

QComboBox QAbstractItemView::item {
background: #00bfff;
color: #fff;
font-size: 18px;
padding: 4px 8px;
margin: 4px;
}

QScrollBar:vertical {
background: #fff;
width: 16px;
margin: 4px;
}

QScrollBar::handle:vertical {
background: #00bfff;
border-radius: 8px;
margin: 2px;
}

QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
background: none;
}

QScrollBar:horizontal {
background: #fff;
height: 16px;
margin: 4px;
}

QScrollBar::handle:horizontal {
background: #00bfff;
border-radius: 8px;
margin: 2px;
}

QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
background: none;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
上面的样式将会应用到 QPushButton、QLineEdit、QComboBox、QScrollBar 等控件上,并且可以看到各个控件的样式都是不一样的。其中,QComboBox 还设置了下拉列表视图及列表项的样式。

除了上述基本语法外,Qt 的 Qss 还有一些高级特性。

伪状态和伪元素
Qss 支持控件的伪状态和伪元素,用来描述控件处于特定状态时的样式。常见的状态包括:hover(鼠标悬停时)、pressed(鼠标按下时)、checked(选中状态)、disabled(不可用状态)等。

样式示例:

QPushButton:hover {
background: #1e90ff;
}

QPushButton:checked {
color: #ff4500;
}
1
2
3
4
5
6
7
尺寸和单位
Qss 支持不同的尺寸和单位来定义样式,包括像素(px)、绝对长度(cm、mm、in、pt、pc)、相对长度(em、ex、rem)、百分比(%)等,用于实现不同尺寸的控件效果。

QPushButton {
width: 100px;
height: 30px;
}

QLabel {
font-size: 1.5em;
}

QTextEdit {
padding: 0.5rem;
}

QComboBox {
width: 50%;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
颜色和图像
Qss 支持使用颜色和图像来定义控件的背景,边框和文本颜色等样式。

颜色示例:

QWidget {
background-color: red;
}

QPushButton {
color: white;
background-color: rgb(0, 255, 0);
}

QLineEdit {
border: 1px solid #ccc;
}

QLabel {
color: black;
background-color: rgba(255, 255, 0, 0.5);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
图像示例:

QPushButton {
border-image: url(button.png) 5 5 5 5 stretch;
}

QLabel {
background-image: url(background.png);
background-repeat: no-repeat;
background-position: center;
background-size: cover;
}

QTextEdit {
background-image: url(paper.jpg);
background-attachment: fixed;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
动画效果
Qss 还支持使用动画效果来实现控件的动态样式,通过 @keyframes 和 animation 实现。

样式示例:

QPushButton:hover {
animation: pulse 0.5s;
}

@keyframes pulse {
0% {background-color: #1e90ff;}
50% {background-color: #00bfff;}
100% {background-color: #1e90ff;}
}
1
2
3
4
5
6
7
8
9
总结
Qss 是一个强大的控件样式表语言,可以帮助我们实现各式各样的自定义控件效果。它可以设置控件属性、子控件属性、样式状态、颜色、图像、动画等。了解 Qss 语法和常用样式属性将能够让你更快速地实现丰富的 Qt 界面效果。
————————————————
版权声明:本文为CSDN博主「IT观察者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/future_ai/article/details/130265058

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt 的 Qss使用 的相关文章

  • 扩展位置绝对div超出溢出隐藏div

    我已经好几个月没有做过CSS了 所以我可能会错过一些简单的东西 但无论解决方案是什么 我都无法弄清楚 所以问题就在这里 这是我的代码的简化版本 div style height 100 width 200px div style margi
  • 如何检测元素内容何时发生变化

    我正在寻找一种方法来监视元素内动态填充 无页面重新加载 内容 以便我可以将类添加到另一个元素 到目前为止我有这个 HTML div class message container div class messages error span
  • 如何在html中制作多行类型的文本框?

  • HTML5

    我想在随机位置开始和停止 HTML5 播放 并具有淡入和淡出周期 以平滑聆听体验 为此存在什么样的机制 使用 setTimeout 手动增加音量 jQuery 的方式 audio animate volume newVolume 1000
  • 删除圆形图像周围的边框

    我有一个圆形图像 png 文件 中间是透明的 我需要将图像内的背景设置为纯色 为此 我将背景设为纯色 然后将border radius 50 但这会产生一条丑陋的小白线 有没有办法摆脱这个问题 或者我必须在图像编辑器中手动为图像着色 div
  • Javascript 使事件点击和语音识别与多个按钮一起工作

    所以我正在使用 webkitSpeechRecognition 并且它工作得很好 但问题是我想同时在多个地方使用它 当我将它添加到页面上的另一个部分时 它无法正常工作 这是它自己工作的情况 var final transcript var
  • 如何使用文件输入在PDFJS中打开本地PDF?

    我想知道是否有办法使用选择pdf文件input type file 并使用打开它PDFJS https github com mozilla pdf js 您应该能够使用 FileReader 来获取文件对象的内容作为类型化数组 pdfjs
  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • 如何处理 Django 中的错误

    我想让我的 django 应用程序尽可能对用户友好 并且我想处理适当的错误并让它推出类似于 javascript 中的警报的错误消息 我想在没有上传文件时执行此操作 因此 当按下上传按钮并且尚未上传任何内容时 将会发出一条警报消息 我的看法
  • 我怎样才能让这个脚本在 WordPress 上运行?

    我有这个脚本 document ready function text1 click function this hide 代码html div class div1 p class text1 text to appear when th
  • 使用 HTML5(数据列表)自动完成功能和“包含”方法,而不仅仅是“开头为”

    我找不到它 但我又不知道如何搜索它 我想用
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • 更改API数据输出的布局

    我是 API 集成和 PHP 的新手 我最近将 VIN 解码器集成到我的应用程序中 在输入框中输入车辆的 VIN 选择提交 然后就会显示 API 数据库中有关该车辆的所有信息 数据存储为关联数组 其中包含类别及其相应元素 例如 对于 VIN
  • 检索 css3 缩放元素的宽度/高度

    我正在与 offsetWidth 属性的奇怪之处 我认为 作斗争 这是场景 比方说 我有一个span标签 在我的js中 在某个时刻我执行css3转换 对于这个元素 例如 el set styles transform scale scale
  • QML 连接:不推荐使用连接中隐式定义的 onFoo 属性

    升级到 Qt 5 15 时收到以下错误消息 QML Connections Implicitly defined onFoo properties in Connections are deprecated Use this syntax
  • 适用于移动设备的响应式订单确认电子邮件?

    我从未见过令人惊叹的订单确认 发票电子邮件 即使是最好的 html5 网站也会发送糟糕的订单确认电子邮件 有时是纯文本 我相信这是因为发票通常需要使用表格来显示购买的物品 这在移动设备上实现起来非常困难 我发现了一些让手机上的表格更易于管理
  • 将特定字形与网络字体一起使用

    使用网络字体 我想使用字体功能设置 CSS 中的选项以及跨度类HTML 中 以便使用字体集中的特定替代字形 我需要以正确的语法使用哪些值 GID Unicode 才能定位特定的目标glyph内glyph备择方案 这些功能使用 OpenTyp
  • Qt表格小部件,删除行的按钮

    我有一个 QTableWidget 对于所有行 我将一列的 setCellWidget 设置为按钮 我想将此按钮连接到删除该行的函数 我尝试了这段代码 它不起作用 因为如果我只是单击按钮 我不会将当前行设置为按钮的行 ui gt table
  • 如何在画布上所有其他内容后面绘制图像? [复制]

    这个问题在这里已经有答案了 我有一块画布 我想用drawImage在画布上当前内容后面绘制图像 由于画布上已经有内容 我正在使用字面上的画布来创建包含图像的画布 因此我无法真正先绘制图像 所以我无法使用drawImage在我呈现其余内容之前
  • Facebook 点赞按钮消失

    我的网站中的 Facebook Like 按钮出现问题 添加此代码 由 facebook 提供 按钮在创建时正确显示在任何页面中

随机推荐

  • 新论文石锤Transformer:别只看注意力,没有残差和MLP,它啥都不是

    作者 青暮 基于注意力的架构在机器学习社区中已经变得无处不在 Transformer最初在机器翻译打出名堂 随着BERT的问世几乎统治了整个NLP领域 RNN LSTM等老前辈瑟瑟发抖 GPT 3的零样本学习能力又令人不禁怀疑其智能本质 还
  • 简单几步,让Mac外接显示器更好用

    光懂得给MacBook连接外置显示器还不行 了解这几点 才能让Mac外接显示器更好用 可以在两个显示器桌面之间任意拖拽移动软件窗口 这也是双 多 显示器一个高效的地方 将外接显示器设置为最佳分辨率 MacBook连接上外接显示器后 打开 系
  • Qt之工程文件

    文章目录 1 注释 2 QT 3 模板变量 TEMPLATE 4 TARGET 5 CONFIG 6 控制输出目录 6 1 UIC DIR 6 2 RCC DIR 6 3 MOC DIR 6 4 OBJECTS DIR 6 5 DESTDI
  • linux下制作动态库

    1 动态库的介绍 动态库 也叫共享库 动态库与用户编写的程序相互独立 不被包含在用户生成的可执行文件当中 2 动态库的创建 第一步 将写好的程序编译 我们事先写好两个程序 bye c hello c 一个输出hello一个输出bye 在终端
  • Spring AOP(一)五种增强(Advice)

    AOP术语都非常抽象 结合某些小例子就会形象 具体一些 连接点 Joinpoint Spring仅支持方法的连接点 即仅能在方法调用前 方法调用后 方法抛出异常时及方法调用前后 这些程序执行点织入增强 黑客攻击系统需要找到突破口 从某种程度
  • 【安卓网络编程】Android Studio导入Volley

    在Android Studio中使用Volley框架 首先要导入Volley到项目中去 点击主界面左上角File 点击Project Structure 在Modules下 点击app 然后点击Dependencies 然后点击右边的那个
  • 企业级音视频会议实战之webrtc服务器janus品尝实战

    1 前言 之前写过单纯用webrtc和springboot实现单人 多人 屏幕分享等功能的一系列文章了 心疼各位giegie 已将例子放在下面 不麻烦你们去找了 webrtc实现视频群聊系列文章 一 之基础入门 webrtc实现视频群聊系列
  • C++ 大话设计之《访问者模式》(优缺点,设计原理,常用场景)

    访问者模式是一种行为型模式 优点 能够在不改变对象结构的情况下增加新的操作 使得操作集合可以相对独立地演化 缺点 增加新的元素类变得困难 因为每个新元素都必须被访问者类所接受 此外 如果对象结构中的元素类经常发生变化 那么使用访问者模式可能
  • 微信公众号订阅通知设置

    1 开通订阅通知 根据api开通 https developers weixin qq com doc offiaccount Subscription Messages intro html 2 设置订阅通知组件 根据api设置服务号订阅
  • linux dts 语法格式,设备树DTS格式解析

    8种机械键盘轴体对比 本人程序员 要买一个写代码的键盘 请问红轴和茶轴怎么选 宿主机 ubuntu16 04 开发板 tq imx6ull 内核版本 linux 4 1 15 用实例讲解下设备树dts语法 dts文档都在内核的arch ar
  • @antv/g2踩坑记录

    自定义tooltip 需要先在绘图时配置自定义tooltip的需要的字段 chart point position value 1 shape pointer tooltip name value date name value date
  • 投资合伙人股份分配_创业者必看的合伙人股权分配细则

    惠学习 创业者必看的合伙人股权分配细则 惠学习 创业者必看的合伙人股权分配细则 2016 08 03 苏州高新区惠创业 苏州高新区惠创业 案例 真功夫 真功夫的纠纷大家应该比较了解 现在对它的生意还不影响 但是很遗憾它还没IPO 最主要的原
  • Linux配置Java环境

    使用jdk压缩包方式配置Java环境 1 上传jdk到linux 在linux中软件一般安装到 usr local目录中 2 将jdk解压 解压命令 tar zxvf jdk 8u301 linux x64 tar gz 将解压后的jdk改
  • git子模块无法下载

    用rt studio添加软件包时会克隆整个仓库 这个时候如果提交代码 就会出现一个警告 如果你强行提交上去 那么这部分代码不会同步 但是你去远程仓库查看时会有一个子模块 如果你clone下来 想去下载子模块时 会提示 No url foun
  • 【Mybatis】maven配置pom.xml时找不到依赖项(已解决)

    我在配置pom xml依赖时 会冒红 解决方法 1 settings gt maven目录 把maven路径改为自己的 具体操作在 Maven Maven安装 入门教程笔记 暮色 年华的博客 CSDN博客 这篇文章里 2 右击pom xml
  • 独立成分分析FastICA算法原理

    独立成分分析FastICA算法原理 首先对于d维的随机变量 x R d 1
  • 【Android取证篇】华为设备跳出“允许USB调试“界面方法的不同方法

    Android取证篇 华为设备跳出 允许USB调试 界面方法的不同方法 华为设备在鸿蒙OS3系统之后 部分设备启用 允许USB调试 方式会有所变化 再次做个记录 蘇小沐 1 实验环境 系统 版本 Windows 11 专业工作站版 22H2
  • scons编译protobuffer脚本代码

    scons编译protobuffer脚本代码 protoc py Google s Protoc builder Example will produce c output files in the src directory protoc
  • Python选基金(爬虫+策略)

    之前买基金都瞎买的 最近突然想可以用python来试试 综合基金类型 持仓 收益率 基金经理多维度综合考虑 看看能不能帮忙选比较优质的基金出来 整体策略 一 数据准备 1 1获得基金经理信息 import requests import t
  • Qt 的 Qss使用

    Qt 的 Qss 是一种用于定义用户界面的样式表语言 它可以用来定义控件的颜色 字体 边框 背景等样式 可以很方便的实现自定义的样式效果 Qss 的基本语法和 CSS 类似 主要是由选择器和样式属性构成 选择器 选择器用来指定要样式化的控件