【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.mzph.cn/pingmian/5644.shtml

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

相关文章

MacOs安装pyenv环境

pyenv介绍 Pyenv 是一个流行的 Python 版本管理工具,它允许你在同一台机器上安装和切换不同版本的 Python。Pyenv 的主要作用包括: 多版本管理: 允许你在同一台计算机上安装多个版本的 Python,包括官方版本、开发版本和各种发行版。这对于测试…

知识图谱与知识表示:人工智能的基石

知识图谱与知识表示:人工智能的基石 一、知识图谱:连接数据的桥梁1.1 知识图谱的构成1.2 知识图谱的应用 二、知识表示:AI的推理基础2.1 知识表示的定义2.2 知识表示的形式 三、从符号表示到向量表示3.1 符号表示与向量表示3.2 向量表示的优势…

搭建企业级DNS服务器真实案例精讲

搭建企业级DNS服务器真实案例精讲 1----3-2-1.1.搭建DNS服务服务器为公司的多个域名提供解析.M 2----3-2-1.2格建DNS服务服务器为公司的客不域名提供解析补 3----3-2-1.3.格建DNS服务服务器为公司的多个域名提供解析扣 4----3-2-1.4.搭建DNS服务服务器为公司的多个域名提供解析…

JAVA: Spring Boot加载 Shiro 配置 >>找不到 SecurityManager

在 Spring Boot 应用中集成和配置 Apache Shiro 通常涉及创建一个配置类来设置 SecurityManager,以及定义 Shiro 的 Web 支持和必要的安全策略。下面是使用 Spring Boot 配置 Apache Shiro 的步骤: ### 1. 添加依赖 首先,确保在你的 pom.xml…

跟我学C++中级篇——零长度数组

一、零长度数组 最初使用零长度数组是在串口通信和网络通信中使用的,它类似于下面的代码: struct Data {int a;char c;char buf[0]; };零长度数组又叫柔性数组,这个非常贴切。它早期是GNU的一个扩展,后来在C99中也进行了支持&am…

【经典面试题】JavaScript中的异步操作与回调地狱解决方法

JavaScript中的异步操作与回调地狱解决方法 在现代的Web开发中,JavaScript扮演着极为重要的角色,尤其是在处理网络请求、文件操作或者任何可能耗费时间的操作时。为了不阻塞程序的执行,JavaScript 提供了异步编程模型。本文将介绍JavaScript…

vue3 使用pinia -- vue2 vuex的plus版

接入状态store 即 vuex 呃(⊙﹏⊙)vuex这里可以略过了,我在研究完后,才发现vue3出来个pinia,是vuex的升级,体积更小更省事,我不删这里了,单纯记录下🙂 --pinia用法下面有写哦 ① 执行 npm insta…

C# 实现格式化文本导入到Excel

目录 需求 Excel 的文本文件导入功能 范例运行环境 配置Office DCOM 实现 组件库引入 OpenTextToExcelFile 代码 调用 小结 需求 在一些导入功能里,甲方经常会给我们一些格式化的文本,类似 CSV 那样的纯文本。比如有关质量监督的标准文件&…

LangChain 入门6 magic不同格式文件的读取

概述: 除了原始文本数据,可能还希望从其他文件类型(如PowerPoint演示文稿或PDF)中提取信息。 可以使用LangChain文档加载程序将文件解析为可以输入LLM的文本格式。 基于MIME类型的解析 数据加载 import requestsresponse req…

如何理解和实现二分查找:一篇完整的解析

二分查找的基本思想 二分查找的核心思想是比较数组的中间元素与目标值。根据比较结果,可以排除一半的搜索空间。具体步骤如下: 初始化指针:设置两个指针,left 指向数组的开始位置,right 指向数组的结束位置。 循环搜索…

手写线程池|C语言版(二)|定义线程池的结构、创建线程池实例

文章目录 定义线程池结构任务结构体定义线程池结构体 组织头文件创建线程池实例函数原型定义线程池创建函数实现初始化线程池结构体指针初始化线程池结构体的各类参数 定义线程池的结构C代码创建线程池总体C代码 本文中,我们将创建线程池的结构体,该结构…

TCP/IP和HTTP协议

TCP/IP OSI 七层模型在提出时的出发点是基于标准化的考虑,而没有考虑到具体的市场需求,使得该模型结构复杂,部分功能冗余,因而完全实现 OSI 参考模型的系统不多。而 TCP/IP 参考模型直接面向市场需求,实现起来也比较…

一文掌握:Clipboard API ,让前端顺畅操作剪贴板,无论怎么复制,都显示你网站信息。

一、Clipboard API是什么 Clipboard API 是一个 Web API,它提供了一种在网页上读取和写入剪贴板内容的方式。通过 Clipboard API,网页可以访问用户的剪贴板,从中读取文本、图像或其他数据,并且可以将数据写入剪贴板,以…

FFmpeg基础知识详解:音频视频处理的强大工具

FFmpeg,这个强大的开源多媒体框架,已经成为全球范围内音频、视频处理和流媒体传输领域的基石。它集合了音频解码、编码、转码、混合、抓取、流化等多种功能于一身,几乎能满足任何与音视频处理相关的技术需求。本文将带你走进FFmpeg&#xff0…

2024五一杯C题思路代码文章成品分享:煤矿深部开采冲击地压危险预测

提供的数据分为五类: A:正常工作数据 B:前兆特征数据 C:干扰信号数据 D:传感器断线数据 E:工作面休息数据 任务细节: 任务1: 分析含干扰的电磁辐射和声发射信号,识别干扰信号的特征,并利用这些特征在特定时间段…

安装Kuboard管理k8s

一、Kuboard 介绍 Kuboard 是一款免费的 Kubernetes 管理工具,提供了丰富的功能,结合已有或新建的代码仓库、镜像仓库、CI/CD工具等,可以便捷的搭建一个生产可用的 Kubernetes 容器云平台,轻松管理和运行云原生应用。您也可以直接将 Kuboard 安装到现有的 Kubernetes 集群…

计算机毕业设计python_django宠物领养系统z6rfy

本宠物领养系统主要包括两大功能模块,即管理员模块、用户模块。下面将对这两个大功能进行具体功能需求分析。 (1)管理员:管理员登录后主要功能包括个人中心、用户管理、送养宠物管理、地区类型管理、失信黑名单管理、申请领养管理…

深入解析Jackson的ObjectMapper:核心功能与方法指南

com.fasterxml.jackson.databind.ObjectMapper 是Jackson库的核心类,负责JSON序列化与反序列化的重任。本文旨在详细介绍其成员属性和方法,帮助开发者更好地利用Jackson进行Java对象与JSON数据之间的转换操作。 初始化与配置 构造与复制 默认构造函数…

封装umi-request时通过 AbortController 配置取消请求

一、关键部分 一、在封装的request.ts中 声明一个 abortControllers 对象用于存储要取消的请求(我用了-s表示复数,多个abortcontroller对象,与下面👇的单个abortController区分)封装取消请求的函数cancelRequest, 传入…

038——基于STM32和I.MX6uLL实现uart控制GPS(失败者总结)

目录 1、GPS模块简介 2、GPS数据格式 3、方案梳理 1、GPS模块简介 全球定位系统(Global Positioning System, GPS)是一种以空中卫星为基础的高精度无线电导航的定位系统,它在全球任何地方以及近地空间都能够提供准确的地理位置、车行速度及精确的时间…