当前位置: 首页 > article >正文

【Qt】界面优化

界面优化

  • 设置全局样式
  • 样式文件
  • 使⽤ Qt Designer 编辑样式
  • 选择器
  • 设置子控件样式
  • 伪类选择器
  • 样式属性
    • 盒模型
    • 设置按钮样式
    • 设置复选框样式
    • 输入框样式
    • 列表样式
    • 菜单栏样式

在 Qt 中对界面的优化和 CSS 类似。语法结构如下:

选择器 {
 属性名: 属性值; 
 }

例如:

QPushButton { color: red; }
或
QPushButton {
	 color: red;
} 

上述代码表示,将界面上的 QPushButton 的文本设置为红色。
下面的代码指定一个按钮,通过使用 setStyleSheet 的方式设置样式:
在这里插入图片描述

若要设置两个按钮的样式,可设置其父控件的样式,也就是 widget(指定控件设置样式后,该控件的子控件也会改变)
在这里插入图片描述

设置全局样式

直接看例子,在 main.cpp 中设置:
在这里插入图片描述

若设置了全局样式(设置字体颜色),并在某个控件里设置了其他样式(设置字体大小),两者不冲突则会叠加。
若设置了全局样式(设置字体颜色),并在某个控件里设置了其他样式(设置字体颜色),两者冲突则优先后者。

样式文件

上述方式都是简单的设置控件样式,若控件很多或样式很多,则不能更好的维护。更好的做法是把样式放到单独的文件中,通过读取文件的方式加载样式。

  1. 创建 qrc 文件,通过 qrc 管理样式文件:
  2. 创建单独的 qss 文件,把这样的文件放到 qrc 中:
  3. 编写 C++ 代码,读取 qss 文件中的内容,并设置样式:
    前面和设置图标时步骤一样,add files 时,在弹出的对话框右键创建 style.qss 文件
    在这里插入图片描述
    打开 style.qss,并编写代码:
    在这里插入图片描述

读取样式文件并设置全局样式:

在这里插入图片描述

使⽤ Qt Designer 编辑样式

Qt 提供了一种更便捷的方式来编辑样式:
在这里插入图片描述
在这里插入图片描述

选择器

加粗为常用

选择器示例说明
全局选择器*选择所有的 widget.
类型选择器(type selector)QPushButton选择所有的QPushButton和其子类的控件.
类选择器(class selector).QPushButton选择所有的QPushButton的控件. 不会选择子类.
ID选择器#pushButton_2选择objectName 为 pushButton_2 的控件.
后代选择器QDialog QPushButton选择QDialog的所有后代(子控件,孙子控件等等)中的QPushButton.
子选择器QDialog>QPushButton选择QDialog的所有子控件中的QPushButton.
并集选择器QPushButton, QLineEdit, QComboBox选择QPushButton, QLineEdit, QComboBox 这三种控件.(即接下来的样式会针对这三种控件都生效).
属性选择器QPushButton[flat=“false”]选择所有QPushButton中, flat属性为false的控件.

在这里插入图片描述

使用 ID 选择器:
在这里插入图片描述

使用并集选择器(并集选择器中也可以使用 ID 选择器,例如 “#pushButton, QLabel{}”):
在这里插入图片描述

设置子控件样式

可以通过帮助手册搜索 Qt Style Sheets Reference 查看具体的子控件:
在这里插入图片描述
在下方我们可以看到案例:
在这里插入图片描述
在这里插入图片描述

下面以修改 combox 子控件 down-arrow 样式为例(修改下拉图标):
同样先将图标添加到resource中,通过全局样式的方式修改:
在这里插入图片描述

伪类选择器

伪类选择器是根据控件所处的某个状态被选择的,例如按钮被按下,输入框获取到焦点,鼠标移动到某个控件上等。
当状态具备时,控件被选中,样式生效。
当状态不具备时,控件不被选中,样式失效。使用 :的方式定义伪类选择器。
常用的伪类选择器:

伪类选择器说明
:hover鼠标放到控件上
:pressed鼠标左键按下时
:focus获取输入焦点时
:enabled元素处于可用状态时
:checked被勾选时
:read-only元素为只读状态时

可以使用!取反,则 :!hover 就是鼠标离开控件时,:!pressed 就是鼠标松开时 等
在这里插入图片描述

样式属性

QSS 中的样式属性非常多,可以到文档中 Qt Style Sheets Reference 章节查看。

盒模型

在参考文档中,提及了一个叫盒模型的东西:
在这里插入图片描述
以下是通过 QSS 属性设置上述边距和边框的样式:

QSS属性说明
margin设置四个方向的外边距,复合属性(可由多个组成,例如margin-left, margin-top等)
margin: 10px 四个方向都是10px 外边距
margin: 10px 20px 上下是10px , 左右是 20px
margin: 10px 20px 30px 40px 按顺时针方向,上右下左依次取值
padding设置四个方向的内边距,复合属性
border-style设置边框样式
border-width边框的粗细
border-color边框的颜色
border复合属性,相当于 border-style + border-width + border-color

在这里插入图片描述

设置按钮样式

还可以通过 QPushButton::pressed 设置鼠标按下去的样式

在这里插入图片描述

设置复选框样式

属性说明
::indicator子控件选择器. 选中checkbox中的对钩部分.
hover伪类选择器. 选中鼠标移动上去的状态.
pressed伪类选择器. 选中鼠标按下的状态.
:checked伪类选择器. 选中checkbox被选中的状态.
unchecked伪类选择器. 选中checkbox未被选中的状态.
width / height设置子控件宽度 / 高度. 对于普通控件无效 (普通控件使用geometry方式设定尺寸).
image设置子控件的图片. 像 QSpinBox, QComboBox 等可以使用这个属性来设置子控件的图片.

在这里插入图片描述

输入框样式

在这里插入图片描述

列表样式

在这里插入图片描述

使用渐变色 qlineargradient:

在这里插入图片描述
在这里插入图片描述

菜单栏样式

在这里插入图片描述

-说明
QMenuBar::item选中菜单栏中的元素
QMenuBar:item:selected选中菜单栏中的被选中的元素
QMenuBar::item:pressed选中菜单栏中的鼠标点击的元素
QMenu::item选中菜单中的元素
QMenu:item:selected选中菜单中的被选中的元素
QMenu::separator选中菜单中的分割线

http://www.kler.cn/a/529770.html

相关文章:

  • Docker 部署 Starrocks 教程
  • 【数据采集】案例02:基于Selenium采集豆瓣电影Top250的详细数据
  • Python3 【闭包】项目实战:5个新颖的学习案例
  • FIDL:Flutter与原生通讯的新姿势,不局限于基础数据类型
  • 二级C语言:二维数组每行最大值与首元素交换、删除结构体的重复项、取出单词首字母
  • 【Python蓝桥杯备赛宝典】
  • day37|完全背包基础+leetcode 518.零钱兑换II ,377.组合总和II
  • 记录 | 基于MaxKB的仿小红书旅游文章AI制作(含图文、视频)
  • 边缘检测算法(sobel)
  • redis集群理论详解
  • 安卓pad仿写element-ui表单验证
  • 关于合并两个有序链表
  • STM32CUBEIDE编译的hex使用flymcu下载后不能运行
  • Ubuntu 22.04系统安装部署Kubernetes v1.29.13集群
  • JavaScript系列(54)--性能优化技术详解
  • c语言(关键字)
  • Android 13 取色引擎详解
  • 每日 Java 面试题分享【第 19 天】
  • 微信小程序问题1 skyline模式渲染webview模式
  • Labelme转Voc、Coco
  • LeetCode 2909. 元素和最小的山形三元组 II
  • 实验9 JSP访问数据库(二)
  • 94,【2】buuctf web [安洵杯 2019]easy_serialize_php
  • 三角形的最大周长(976)
  • 群晖NAS安卓Calibre 个人图书馆
  • 在C++中,成员变量必须在对象构造完成前初始化,但初始化的方式有多种...