【Qt之·控件·样式表】

系列文章目录


文章目录

  • 前言
  • 一、Qt样式表的基础知识
    • 1.1 Qt样式表的定义和语法规则
    • 1.2 Qt样式表中的选择器和属性
      • 1.2.1 盒子模型
        • 1.2.2 border
    • 1.3 Qt样式表中的伪类和伪元素
  • 二、编写基本的Qt样式表
    • 2.1 在Qt应用程序中引入样式表文件的方式
    • 2.2 设置基本的背景色、字体样式等
  • 三、Qt样式表的高级应用技巧
    • 3.1 使用选择器和属性选择器来更精确地定位元素
    • 3.2 使用伪类和伪元素来实现特定的效果
    • 3.3 使用层叠样式表(QSS)选择器和属性
  • 四、Qt样式表的调试和优化
    • 4.1 使用Qt的样式编辑器
    • 4.2 使用Qt Creater的视觉调试工具
    • 4.3 实时预览和调试样式表
  • 五、不同控件样式表语法
    • 5.1 QComboBox
      • 5.1.1 设置下拉框框体
      • 5.1.2 设置下拉框窗体子项
      • 5.1.3 设置下拉框窗体
  • 六、实例演示
  • 总结


前言

  控件样式表是一种基于层叠样式表(CSS)语法的方式,用于定制和美化Qt控件的外观和风格。通过控件样式表,我们可以改变控件的背景颜色、字体、边框等属性,还可以设置控件在不同状态下的样式,如鼠标悬停、按下等。这为我们提供了很大的自由度,使我们能够根据自己的需求和设计风格来定制界面。

  本博客将介绍如何使用Qt样式表来定制常见的控件,包括按钮、标签、文本框等。我们将学习如何设置控件的背景颜色、字体、边框等属性,如何设置控件在不同状态下的样式,以及如何通过样式表设置控件的大小和位置等。


一、Qt样式表的基础知识

1.1 Qt样式表的定义和语法规则

1.2 Qt样式表中的选择器和属性

1.2.1 盒子模型

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/72c557f95f2b4f1ebc57bd1371cde4f8.png在这里插入图片描述

注意: margin、border-width和padding属性都默认为0。在这种情况下,所有四个矩形(边距、边框、填充和内容)都完全重合。

CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。

盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

下面的图片说明了盒子模型(Box Model):
不同部分的说明:

  • Margin(外边距) - 清除边框外的区域,外边距是透明的。
  • Border(边框) - 围绕在内边距和内容外的边框。
  • Padding(内边距) - 清除内容周围的区域,内边距是透明的。
  • Content(内容) - 盒子的内容,显示文本和图像。
    为了正确设置元素在所有浏览器中的宽度和高度,你需要知道的盒模型是如何工作的。
1.2.2 border

每个边框有3个方面:样式(或外观)、颜色、以及其宽度(粗细),下面我们分别重点解释这三项。
边框样式(border-style)
设置元素所有边框的样式,或者单独地为各边设置边框样式。它有10个属性值,分别是:

枚举值说明
none无样式
hidden同样是无样式,主要用于解决和表格的边框冲突
dotted点划线
dashed虚线
solid:实线
double双线,两条线加上中间的空白等于border-width的取值
groove槽状(定义 3D 凹槽边框。其效果取决于 border-color 的值。)
ridge脊状,和groove相反(定义 3D 垄状边框。其效果取决于 border-color 的值。)
inset凹陷(定义 3D inset 边框。其效果取决于 border-color 的值。)
outset凸出,和inset相反(定义 3D outset 边框。其效果取决于 border-color 的值。)
inherit规定应该从父元素继承边框样式

1.3 Qt样式表中的伪类和伪元素

二、编写基本的Qt样式表

2.1 在Qt应用程序中引入样式表文件的方式

2.2 设置基本的背景色、字体样式等

三、Qt样式表的高级应用技巧

3.1 使用选择器和属性选择器来更精确地定位元素

3.2 使用伪类和伪元素来实现特定的效果

3.3 使用层叠样式表(QSS)选择器和属性

四、Qt样式表的调试和优化

4.1 使用Qt的样式编辑器

4.2 使用Qt Creater的视觉调试工具

4.3 实时预览和调试样式表

五、不同控件样式表语法

5.1 QComboBox

5.1.1 设置下拉框框体

"QComboBox {""max-height: 30px;""min-height: 30px;""background-color: #ffffff;""border: 1px solid gray;""border-radius: 3px;""padding: 1px 18px 1px 3px;""min-width: 6em; }"

5.1.2 设置下拉框窗体子项

 "QComboBox QAbstractItemView::item{height: 80px;}"

注意:

  • QComboBox QAbstractItemView::item来修改item的样式,前提必须调用comboBox->setView(new QListView()); 才会生效。 我们看到虽然高度修改为50了,但是文字大小需要重新设置,此时comboBox->setFont(font);不会影响到下拉框的Item文字

5.1.3 设置下拉框窗体

 "QComboBox QAbstractItemView {""max-height: 200px;""min-height: 200px;""outline: 10px solid;" /*分割线*/"border: 1px solid;""color: black;""background-color: #124879;""selection-background-color:#0a386e;""}"

注意:

  • 在 Qt 的 QComboBox 中,设置下拉框展开后(即下拉列表)的高度并不直接通过属性或方法来实现,因为 QComboBox 本身并没有直接控制下拉列表高度的属性。但是,你可以通过一些间接的方式来影响或控制这个高度。

ui->m_qcombxType->setMaxVisibleItems(10); // 设置最多可见10个项目

六、实例演示


总结

  总的来说,学习Qt控件样式表可以使我们更加灵活地定制和美化界面。通过使用样式表,我们可以改变控件的外观、字体、边框等属性,还可以根据控件的状态来改变其样式,提供更好的用户体验。希望本博客对你学习Qt控件样式表提供了帮助,让你在应用程序的界面设计和定制中更加自如。祝你学习愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/318661.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB中功率谱密度计算pwelch函数使用详解

MATLAB中功率谱密度计算pwelch函数使用详解 目录 前言 一、pwelch函数简介 二、pwelch函数参数说明 三、pxx pwelch(x)示例 四、[pxx,f]pwelch(x,window,noverlap,nfft,fs)示例 四、[pxx,f] pwelch(x,window,noverlap,nfft,fs,freqrange,spectrumtype)示例 五、多通道功…

SpringCloud整合Gateway结合Nacos

目录 一、引入依赖 二、开启两个测试项目 2.1 order service ​编辑 2.2 user service 三、gateway项目 3.1 新建一个bootstrap.yml文件 3.2 将我们的的网关配置写道nacos里的配置里 3.3 测试:看能够根据网关路由到两个测试的项目 四、 优化 4.1 将项目打包…

低代码技术在构建质量管理系统中的应用与优势

引言 在当今快节奏的商业环境中,高效的质量管理系统对于组织的成功至关重要。质量管理系统帮助组织确保产品或服务符合客户的期望、符合法规标准,并持续改进以满足不断变化的需求。与此同时,随着技术的不断进步,低代码技术作为一…

Windows系统启动Redis

一、下载windows版本Redis 1.1 选择一个使用的版本 在以下地址中选择一个Windows系统可以使用的版本 https://github.com/microsoftarchive/redis/tags 1.2 下载 1.3 解压到文件夹 二、启动Redis 双击redis-server.exe启动Redis 出现以下界面即启动成功 三、测试是否可以使…

hive-row_number() 和 rank() 和 dense_rank()

row_number() 是无脑排序 rank() 是相同的值排名相同,相同值之后的排名会继续加,是我们正常认知的排名,比如学生成绩。 dense_rank()也是相同的值排名相同,接下来的排名不会加。不会占据排名的坑位。

DB-GPT部署验证

一、DB-GPT简介 DB-GPT是一个开源的数据库领域大模型框架。目的是构建大模型领域的基础设施,通过开发多模型管理、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作等多种技术能力,让围绕数据库构建大模型应用更简单,更方便。 GITHU…

R语言4版本安装mvstats(纯新手)

首先下载mvstats.R文件 下载mvstats.R文件点此链接:https://download.csdn.net/download/m0_62110645/89251535 第一种方法 找到mvstats.R的文件安装位置(R语言的工作路径) getwd() 将mvstats.R保存到工作路径 在R中输入命令 source(&qu…

分享我的github仓库

这是一个由现代C编写的小型、学习性质的服务器框架,包含压缩,序列化,IO调度,Socket封装,文件配置,日志库等多个完整自研模块,欢迎到我的仓库阅读代码和安装体验,期待任何的建议和反馈…

Themis新篇章:老牌衍生品协议登陆Blast L2,探索全新经济模型

本文将深入分析 Themis 的最新经济模型,探讨其核心概念和机制、优势与创新之处、风险与挑战。 一、引言 随着区块链技术的不断发展,DeFi 衍生品项目逐渐成为市场的焦点。而用户体验的革新,进一步的金融创新,去中心化治理方案的优…

Linux开发板 FTP 服务器移植与搭建

VSFTPD(Very Secure FTP Daemon)是一个安全、稳定且快速的FTP服务器软件,广泛用于Unix和Linux操作系统。它以其轻量级、高效和易于配置而受到赞誉。VSFTPD不仅支持标准的FTP命令和操作,还提供了额外的安全特性,如匿名F…

Python爬取豆瓣电影Top250数据

任务 爬取豆瓣电影top250中的影片名称、影片海报、年份、地区、类型、评分、评价人数、总体评价,并输出到douban_top250.xlsx文件中 环境 Python 3.8 requests bs4 openpyxl 源码 # 创建一个新的Excel工作簿 workbook openpyxl.Workbook() # 获取默认的工作表…

软件工程全过程性文档(软件全套文档整理)

软件项目相关全套精华资料包获取方式①:进主页。 获取方式②:本文末个人名片直接获取。 在软件开发的全过程中,文档是记录项目进展、决策、设计和测试结果的重要工具。以下是一个简要的软件全过程性文档梳理清单: 需求分析阶段…

“Unite“ > MacOS下很不错的网站转应用App的工具

前言 前不久在浏览mac论坛,无意了解到一款非常好的工具,可以将网站转换为app,考虑到我们现在的主要应用都从本地客户端转成web形式使用,但基于本能的使用习惯,还是希望有个快捷的访问信息,这个应用非常适合…

集成框架 -- OSS

前言 接入oss必须有这两个文档基础 使用STS临时访问凭证访问OSS_对象存储(OSS)-阿里云帮助中心 前端上传跨域 正文 sts前后端通用,开通图示 AliyunSTSAssumeRoleAccess 后端实现代码 public static void main(String[] args) {String regionId "cn-ha…

java-函数式编程-函数对象

定义 什么是合格的函数?无论多少次执行函数,只要输入一样,输出就不会改变 对象方法的简写 其实在类中,我们很多参数中都有一个this,被隐藏传入了 函数也可以作为对象传递,lambda就是很好的例子 函数式接口中…

性能监控之prometheus+grafana搭建

前言 Prometheus和Grafana是两个流行的开源工具,用于监控和可视化系统和应用程序的性能指标。它们通常一起使用,提供了强大的监控和数据可视化功能。 Prometheus Prometheus是一种开源的系统监控和警报工具包。它最初由SoundCloud开发,并于…

[数据结构]———归并排序

具体代码:在gitee仓库:登录 - Gitee.com 目录 ​编辑 1.基本思想: 2. 代码解析 1.分析 2.逻辑图 3.运行结果 1.基本思想: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分…

学习CSS3,实现红色心形loading特效

试想一下,如果你的网站在加载过程中,loading图由一个老旧的菊花转动图片,变为一个红色的心形loading特效,那该有多炫酷啊。 目录 实现思路 初始化HTML部分 延迟动画是重点 设定动画效果 完整源代码 最后 实现思路 每个…

《自动机理论、语言和计算导论》阅读笔记:p215-p351

《自动机理论、语言和计算导论》学习第 11 天,p215-p351总结,总计 37 页。 一、技术总结 1.constrained problem 2.Fermat’s lats theorem Fermat’s Last Theorem states that no three positive integers a, b and c satisfy the equation a^n b…

Debian 12 -bash: netstat: command not found 解决办法

问题表现: debian 12系统中,不能使用 netstat命令 处理办法: netstat 命令就的net-tools中,把net-tools工具安装上就好了。 apt-get install netstat 安装之后就可以使用netstat 命令了,如查询端口情况: …