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

Qt --- 其他控件的介绍 --- 多元素控件

一、多元素控件

Qt中提供的多元素控件有:

QListWidget、QListView、QTableWidget、QTableView、QTreeWidget、QTreeView。

前两个为列表、中间两个为表格、后两个为树形。

xxWidget vs xxView是啥区别?

xxView是更底层的实现,xxWidget是基于xxView封装而来的。此处xxWidget是MVC结构的一种经典实现,MVC也是软件开发中,非常经典的软件结构的组织形式了。

M model 数据、V view 视图界面 C controller 控制器 数据和试图之间的业务流程,此处xxView只是负责实现了试图,不负责数据如何存储表示,更不负责数据和试图之间的交互。因此如果使用xxView就需要程序员自己实现model和controller部分,比较麻烦,xxWidget基于xxView同时把model和controller都帮我们实现好了,拿过来就可以使用,人家提供了功能很方便的api,让我们直接就用。

二、QListWidget 控件

核心属性

核心方法

 列表中的每个元素/每一项就称为是一个Item,更具体的说,通过QListWidgetItem类表示的。

此处的row参数就表示插入完毕之后新的元素在第几行。把新元素插入到第几行之前。

核心信号

代码:

三、Table Widget控件

使用QTableWidget表示一个表格控件,一个表格中包含若干行,每一行又包含若干列,表格中的每个单元格,是一个QTableWidgetItem对象。

核心方法

 

核心信号

QTableWidgetItem核心方法

代码:

如果当前表格中的数据是固定的,完全就可以通过图形化界面来操作,但是实际开发中,很多时候数据是从文件/网络来加载的,此时通过图形化编辑就不合适。

 四、Tree Widget控件

使用QTreeWidget表示一个树形控件,里面的每个元素,都是一个QTreeWidgetItem,每个QTreeWidgetItem可以包含多个文本和图标,每隔文本/图标为一个列。可以给QTreeWidget设置顶层节点,然后再给顶层节点添加子节点,从而构成树形结构。

QTreeWidget核心方法

QTreeWidget控件虽然是树形结构,但是这个树形结构,没有体现出根节点,是从根节点的下一层子节点开始计算的

QTreeWidgetItem核心方法

 代码:

 上述这几个控件相关的操作,数据都是在内存中保存的,无论在界面上做任何操作,重新运行程序,之前的数据就都没了。如果要想让数据能够重启也不丢失,就需要编写更多的代码把内存存储的数据获取到,写入到文件中,并且在下次运行的时候从文件加载数据。

五、QGroupBox的使用 容器类控件。

多元素控件,包含的内容是一个一个自定义好的Item对象,容器类控件包含的内容是前面已经学过的各种控件了。

QGroupBox分组框

可以把其他的各种控件放到GroupBox中,这些内部的控件的父元素就不是this了,而是这个GroupBox。就只是为了让界面看起来更好看一点,当一个界面比较复杂的时候,包含了很多控件的时候。分组框就可以把具有关联关系的控件,组织到一起。

核心属性

代码:麦当劳点餐

六、Tab Widget控件

核心属性

核心信号

代码:创建一个程序带有一个TableWidget作为标签页,提供两个按钮,分别创建新的标签页,关闭当前选中的标签页,当切换标签页的时候,也能感知到变化

七、QVBoxLayout的使用

布局管理器,之前把控件放到界面上都是靠手动的方式来布局的。这种手动调整的方式是不科学的。

1、手动布局的方式非常复杂,而且不精确

2、无法对窗口大小进行自适应

Qt种提供了很多种布局管理器,垂直布局,水平布局,网格布局,表单布局。

垂直布局管理器

代码:创建三个按钮,使用垂直布局管理器管理起来。

每个widget种只能设置一个布局管理器

如果我们在代码中创建layout其实是之创建了一个layout,如果在QtDesigner中创建的layout先创建了一个Widget,然后再在这个新的Widget中添加了一个layout

layout标签标识的是布局管理器的本体,外面自动创建除了一个Widget,每个layout里面又可以包含诺干个item(也就是一个按钮)。

刚才是先拖了layout过去,然后再王layout中拖其他控件,也可以先拖其他控件,后给这些控件套上layout。

八、QHBoxLayout的使用

核心属性

代码:

布局管理器之间,也能进行嵌套。

代码:

九、QGridLayout的使用

核心属性

代码:

拉升系数,刚刚创建的布局管理器,这里的控件尺寸都是均等的。当我们需要创建出尺寸不同的控件的时候,就可以通过拉伸系数来设置,拉伸系数就相当于设置控件之间尺寸的比例。

创建6个按钮,使用网格布局按照2*3的方式来排列。

如果拉伸系数设为0,意思是不参与拉伸。此时按钮的宽度是固定值。

 上述代码,直接设置拉伸系数发现是无效的。这里之所以没有拉伸,是因为SizePolicy起到的影响。这个是QWidget的属性。

由于按钮垂直方向默认没有拉伸开(水平方向是默认拉伸的),因此垂直方向不会受到拉伸系数的影响。要想让垂直方向的拉伸系数生效,就需要让按钮先能够拉伸展开。

十、QFormLayout的使用

前端中有一个form标签,搭配其他的input标签,让网页端用户输入数据,并且提交的服务器。

代码:

十一、QSpacerItem的使用

是布局控制器里的控件有一定的间距

核心属性

代码:

上述的每个控件,都是可扩展的,每隔控件都是对应Qt内置的一个类,咱们在代码中都可以基于这个类,继承出你自定义类的子类。在这个自定义子类中,又可以添加很多的属性和方法,实现你自己的需求场景。还可以在子类中,把多个控件组合到一起。


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

相关文章:

  • JavaScript 原型
  • 使用 OpenAI 进行数据探索性分析(EDA)
  • [Qt platform plugin问题] Could not load the Qt platform plugin “xcb“
  • PyTorch——从入门到精通:PyTorch基础知识(张量)【PyTorch系统学习】
  • Go语言24小时极速学习教程(二)复合数据(集合)操作
  • Python爬虫下载新闻,Flask展现新闻(2)
  • 【在Linux世界中追寻伟大的One Piece】验证TCP
  • 数据工程师岗位常见面试问题-1(附回答)
  • yolo自动化项目实例解析(七)自建UI--工具栏选项
  • 【JavaEE初阶】深入解析单例模式中的饿汉模式,懒汉模式的实现以及线程安全问题
  • IDEA服务启动时无法输出日志
  • 用C++游戏开发
  • 【观察】华为:构筑先进AI存力底座,引领时代更创造时代
  • 企业如何提升知识产权管理效率?
  • linux StarRocks 安装
  • linux开启wol (网络唤醒)
  • MySQL Mail服务器集成:如何配置发送邮件?
  • 信号分解降噪 | Matlab实现基于TVFEMD-IMF能量熵增量的数据降噪方法
  • 华为OD机试 - 新学校选址(Python/JS/C/C++ 2024 E卷 100分)
  • 2024icpc(Ⅱ)网络赛补题E
  • C++(list的简单实现,着重点是迭代器)
  • navicat连接postgresql的ERROR: column datlastsysoid
  • 美图AI短片创作工具MOKI全面开放 支持生成配乐、细节修改
  • Pencils Protocol 成市场新宠,生态通证$DAPP价值几何
  • 鸿蒙HarmonyOS开发生态
  • 使用vite+react+ts+Ant Design开发后台管理项目(四)