【Qt】:界面优化(一:基本语法)

界面优化

  • 一.基本语法
    • 1.设置指定控件样式
    • 2.设置全局控件样式
    • 3.从文件加载样式表
    • 4.使⽤Qt Designer编辑样式(最常用)
  • 二.选择器
    • 1.概述
    • 2.子控件选择器
    • 3.伪类型选择器
  • 三.盒模型

在网页前端开发领域中,CSS是一个至关重要的部分.描述了一个网页的"样式".从而起到对网页美化的作用.所谓样式,包括不限于大小,位置,颜色,背景,间距,字体等等.

现在的⽹⻚很难找到没有CSS的.可以说让"界⾯好看"是⼀个刚需…

网页开发作为GUI的典型代表,也对于其他客户端GUI开发产生了影响.Qt也是其中之一.Qt仿照CSS的模式,引入了QSS,来对Qt中的控件做出样式上的设定,从而允许程序猿写出界面更好看的代码.

同样受到HTML的影响,Qt还引入了QML来描述界面,甚至还可以直接把一个原生的html页面加载到界面上。当然,由于Qt本⾝的设计理念和⽹⻚前端还是存在⼀定差异的,因此QSS中只能⽀持分CSS属性.整体来说QSS要⽐CSS更简单⼀些.

如果通过QSS设置的样式和通过C++代码设置的样式冲突,则QSS优先级更⾼.

一.基本语法

对于CSS来说,基本的语法结构⾮常简单

在这里插入图片描述

QSS沿⽤了这样的设定

在这里插入图片描述

选择器:描述了"哪个widget要应⽤样式规则".
属性:⼀个键值对,属性名表⽰要设置哪种样式,属性值表⽰了设置的样式的值

例如:

在这里插入图片描述

上述代码的含义表⽰,针对界⾯上所有的QPushButton,都把⽂本颜⾊设置为 红⾊ 。

编写QSS时使⽤单⾏的格式和多⾏的格式均可

1.设置指定控件样式

代码⽰例:QSS基本使⽤

在这里插入图片描述

在这里插入图片描述

除了对特定控件设定外,也可以对它的子控件进行设定。例如:对QWidget的子控件QpushButton进行设置。

在这里插入图片描述

在这里插入图片描述

注意:上述代码中,我们是只针对这一个按钮通过setStylesheet方法设置的样式.此时这个样式仅针对该按钮生效.如果创建其他按钮,其他按钮不会受到影响.

2.设置全局控件样式

还可以通过QApplication的setstyleSheet方法设置整个程序的全局样式.全局样式优点:

  1. 使同一个样式针对多个控件生效,代码更简洁.
  2. 所有控件样式内聚在一起,便于维护和问题排查.

在这里插入图片描述

在这里插入图片描述

CSS全称为Cascading Style Sheets,其中Cascading就是"层叠性"的意思.QSS继承了这样的设定.当设置了多种种样式时,样式会进行叠加。

在CSS 中存在优先级规则.通常来说都是"局部"优先级高于"全局"优先级.相当于全局样式先"奠定基调",再通过指定控件样式来"特事特办".

3.从文件加载样式表

上述代码都是把样式通过硬编码的方式设置的.这样使QSS代码和C++代码耦合在一起了,并不方便代码的维护.因此更好的做法是把样式放到单独的文件中,然后通过读取文件的方式来加载样式.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.使⽤Qt Designer编辑样式(最常用)

QSS也可以通过Qt Designer直接编辑,从⽽起到实时预览的效果.同时也能避免C++和QSS代码的耦合.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二.选择器

1.概述

QSS的选择器⽀持以下⼏种:

在这里插入图片描述

总体来说,QSS选择器的规则和CSS选择器基本⼀致.

在这里插入图片描述

在这里插入图片描述

当某个控件身上,通过类型选择器和ID选择器设置了冲突的样式时, ID选择器样式优先级更高…同理,如果是其他的多种选择器作⽤同⼀个控件时出现冲突的样式,也会涉及到优先级问题.Qt⽂档上有具体的优先级规则介绍(参⻅The Style Sheet Syntax的Conflict Resolution章节).这里的规则计算起来非常复杂(CSS中也存在类似的设定),咱们此处对于优先级不做进一步讨论.实践中我们可以简单的认为,选择器描述的范围越精准,则优先级越高.一般来说, ID选择器优先级是最高的.

2.子控件选择器

有些控件内部包含了多个"子控件".比如QComboBox的下拉后的面板,比如QSpinBox的上下按钮等.可以通过子控件选择器::,针对上述子控件进行样式设置.

哪些控件拥有哪些⼦控件,参考⽂档QtStyle Sheets Reference中List of Sub-Controls章节.

代码⽰例:设置下拉框的下拉按钮样式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.伪类型选择器

伪类选择器,是根据控件所处的某个状态被选择的.例如按钮被按下,输入框获取到焦点,鼠标移动到某个控件上等.

  1. 当状态具备时,控件被选中,样式生效.
  2. 当状态不具备时,控件不被选中,样式失效
  3. 使用:的方式定义伪类选择器.

在这里插入图片描述

这些状态可以使用!来取反.比如: ! hover 就是鼠标离开控件时,:! pressed 就是鼠标松开时,等等.

更多伪类选择器的详细情况,参考Qt Style Sheets Reference的Pseudo-States章节.

代码示例:改变按钮颜色

在这里插入图片描述

在这里插入图片描述

三.盒模型

QSS中的样式属性非常多,不需要都记住.核心原则还是用到了就去查.大部分的属性和CSS是非常相似的.米文档的Qt style Sheets Reference章节详细介绍了哪些控件可以设置属性,每个控件都能设置哪些属性等.

在文档的 Customizing Qt widgets Using Style Sheets的The Box Model章节介绍了盒模型.

在这里插入图片描述

一个遵守盒模型的控件,由上述几个部分构成.:

  1. Content矩形区域:存放控件内容.比如包含的文本/图标等.
  2. Border矩形区域:控件的边框.
  3. Padding 矩形区域:内边距.边框和内容之间的距离.
  4. Margin矩形区域:外边距。边框到控件geometry返回的矩形边界的距离默认情况下,外边距,内边距,边框宽度都是0.

在这里插入图片描述

在这里插入图片描述

代码⽰例:设置外边距

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可以看到虽然视觉上按钮的尺寸变小了,实际上它的真实大小并未变。

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

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

相关文章

C++之类和对象--赋值运算符重载和const成员函数

目录 1.赋值运算符重载 1.1运算符重载 1.2赋值运算符重载 1.3其它特性 2.const成员函数 3.取地址及const取地址操作符重载 hello,欢迎大家来到小恶魔频道,今天讲解的是C里面的赋值运算符重载以及const成员函数 1.赋值运算符重载 1.1运算符重载 运…

基于Springboot的新生宿舍管理系统

基于SpringbootVue的新生宿舍管理系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 公告信息管理 院系管理 班级管理 学生管理 宿舍信息管理 宿舍安排管理…

Unity系统学习笔记

文章目录 1.基础组件的认识1.0.组件继承关系图1.1.项目工程文件结构,各个文件夹都是做什么的?1.2.物体变化组件1.2.3.三维向量表示方向1.2.4.移动物体位置附录:使用变换组件实现物体WASD移动 1.3.游戏物体和组件的显示和禁用1.3.1.界面上的操…

python 对图片进行操作

Pillow是一个强大的图像处理库,它提供了许多用于打开、操作和保存图像的功能。 Image模块: Image模块提供了用于打开、创建、编辑和保存图像的基本功能。可以使用Image.open()函数来打开图像文件,或者使用Image.new()函数来创建新的图像,还可…

DSP系统的设计过程与选型

DSP的设计步骤分几个阶段,应用系统的设计过程如图所示。 技术指标的确定 器件的选型原则 其他因素的考虑

css再学习

id选择器的id仅能使用一次; 可去除也可添加加粗效果; font 行高为数字n时(不添加单位)是浏览器默认font-size的n倍; 行高实现文字垂直居中(仅适应于单行文字):将line-height设置…

思科警告:全球出现大规模针对 VPN 服务的暴力破解攻击事件

近日,全球范围内出现了大量针对思科、CheckPoint、Fortinet、SonicWall 和 Ubiquiti 设备的 VPN 和 SSH 服务的大规模凭据暴力破解活动。 原文地址:https://mp.weixin.qq.com/s/UoMgC8Bp6OMJiXgeU3XbyA 暴力攻击是指使用许多用户名和密码尝试登录帐户或…

科研基础与工具(论文写作)

免责申明: 本文内容只是学习笔记,不代表个人观点,希望各位看官自行甄别 参考文献 科研基础与工具(YouTube) 学术写作句型 Academic Phrase bank 曼彻斯特大学维护的一个网站 写论文的时候,不不知道怎么…

【C语言】数据的存储_数据类型:浮点型存储

常见的浮点数: 3.1415926 1E10 浮点型包括:float、double、long double类型 浮点数表示的范围:float.h中定义 浮点数存储规则: 第二个n和*pFloat在内存中明明是同一个数,但浮点数和整数解读结果差别很大。 要理解这…

【热门话题】常用经典目标检测算法概述

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 常用经典目标检测算法概述1. 滑动窗口与特征提取2. Region-based方法R-CNN系列M…

SOTAX溶出测试系统PC触摸屏维修三部曲

SOTAX溶出测试系统作为一款广泛应用于制药行业的知名品牌,具有高精度、操作简便、稳定性好等特点。它适用于各种类型的药品研发和生产环节,为科研人员提供可靠的数据支持。瑞士SOTAX溶出仪是实验室中常用的设备,其触摸屏是用户交互的重要界面…

apache和IIS区别?内网本地服务器项目怎么让外网访问?

Apache和IIS是比较常用的搭建服务器的中间件,它们之间还是有一些区别差异的,下面就详细说说 Apache和IIS有哪些区别,以及如何利用快解析实现内网主机应用让外网访问。 首先说说apache和IIS最基本的区别。Apache运行的操作系统通常为Unix或Lin…