自学内容网 自学内容网

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内置的一个类,咱们在代码中都可以基于这个类,继承出你自定义类的子类。在这个自定义子类中,又可以添加很多的属性和方法,实现你自己的需求场景。还可以在子类中,把多个控件组合到一起。


原文地址:https://blog.csdn.net/m0_67635008/article/details/142450953

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!