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

QT布局综述

一、布局的基本功能

布局的作用应该包括自动调整控件的位置和大小,这样当窗口大小变化时,控件能自适应。比如,当用户拖动窗口变大或缩小时,布局内的按钮、文本框等应该自动调整,而不是固定不动。

嵌套和组合布局的能力。复杂的界面通常需要多种布局组合,比如水平布局里嵌套垂直布局,或者使用网格布局来排列复杂的控件结构。用户可能需要构建比较复杂的界面,这时候布局的嵌套就很有用了

代码维护性方面。使用布局而不是手动设置位置和大小,可以让代码更简洁,更易于维护。比如,如果手动设置每个控件的位置,当需要调整界面时,可能要修改很多数值,而用布局的话,调整布局结构就可以了,这样代码更容易管理。

水平布局适合横向排列控件,垂直布局则是纵向,网格布局适合更复杂的排列,表单布局适合标签和输入框的对齐。

常见布局类型对比

布局类型特点适用场景
QHBoxLayout水平排列控件工具栏、一行按钮
QVBoxLayout垂直排列控件侧边栏、纵向表单
QGridLayout网格形式排列,支持跨行/列合并计算器按键、复杂仪表盘
QFormLayout两列布局,标签对齐输入框用户注册表单、设置对话框
QStackedLayout层叠布局,同一区域切换不同页面向导界面、Tab 页内容切换

二、布局管理器说明

1、Horizontal Layout布局设置(水平布局):他包含的对象都横向排列开:

                                         

2、Vertical Layout布局设置(垂直布局):他包含的对象都纵向排列开:

3、Grid Layout布局设置(网格布局):将控件放置到网格中布局,它本身会从父窗口或父布局中占据尽可能多的界面空间,然后把自己的空间划分为行和列,再把每个控件塞到设置好的一个或多个单元格中。通常情况下 QGridLayout不需要自己添加空白条 QSpacerItem,因为其他功能控件把各自的单元格占据之后,剩下没控件占据的单元格自然就是空的,空的格子默认里面什么都没有,也没有空白条。示例如下:

                           

4、Form Layout布局设置(表格布局):专门用于管理输入控件和与之相关的标签等表单布局,QFormLayout固定为两列布局,并针对表单做了建模,配套了一堆方便使用的函数。网格布局器的基本单元是单元格,而表单布局器的基本单元是行。表单布局器是高度建模并封装的,它没有 addWidget()和 addLayout()之类的函数,它只有addRow()函数。表单布局器中一行的空间可以由多个控件占据,也可以由一个控件占据。示例如下图:

   5、QSpliter分割器的作用:分裂器 QSplitter 是一个实体功能控件,它的基类是 QFrame,QFrame 基类正是 QWidget。QSplitter 可以独立存在,可以作为父窗口容纳多个子控件,分裂器会完全拥有内部的子控件。在 Qt 设计师或 QtCreator 设计模式左边 Widget Box 里面没有分裂器可以拖动,使用分裂器的方式是:选中已有的控件,然后点击上面工具栏的水平分裂器或垂直分裂器按钮。

Qt 共提供了 5 种布局管理器,每种布局管理器对应一个类,分别是 QVBoxLayout(垂直布局)、QHBoxLayout(水平布局)、QGridLayout(网格布局)、QFormLayout(表单布局)和 QStackedLayout(分组布局),它们的继承关系如下图所示:
 

http://www.xdnf.cn/news/9430.html

相关文章:

  • Flutter 实现6个验收码输入框
  • python多进程
  • 应用签名分发平台开发源码时数据储存是如何实现
  • vue3自定义指令来实现 v-focus 功能
  • LittleFS 小型文件系统(一)
  • HOW - 从0到1搭建自己的博客站点(三)
  • KV Cache:大模型推理加速的核心机制
  • shell脚本中的常用命令
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月27日第90弹
  • 【系分】论文模版
  • w笔记--Swagger
  • 开源即战力!从科研到商用:Hello Robot 移动操作机器人Stretch 3多模态传感融合(RGB-D/激光/力矩)控制方案
  • 仿真环境中机器人抓取与操作 - 上手指南
  • java常用工具类:实现文件下载
  • AD-PCB--电子设计学习思路 DAY 1
  • 从零到一:影刀RPA学习者的破局之路
  • 分布式系统中的消息幂等性与流量控制(一)
  • Vue组件技术全解析大纲
  • mediapipe标注视频姿态关键点(基础版加进阶版)
  • Navicat 17 SQL 预览时表名异常右键表名,点击设计表->SQL预览->另存为的SQL预览时,表名都是 Untitled。
  • 【Elasticsearch】scripted_upsert
  • 小白成长之路-计算机网络(四)
  • BUG调试案例十二:LM5117输出电压纹波偏大问题案例
  • 初识 ProtoBuf
  • 破解Docker镜像下载难题
  • 永磁同步电机控制算法--变结构PI调节器
  • 面向测试编程——SmartRefreshLayout的测试case
  • Ubuntu系统开放 45876/tcp 端口
  • Cookie、Session和Token鉴权
  • Python实用脚本:可视化分割txt标签数据