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.mfbz.cn/a/884987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Win10系统使用mstsc远程电脑的时候发现隔一段时间就无法使用剪贴板_rdpclip---Windows运维工作笔记055

最近在使用温湿系统的远程桌面功能的时候发现,每当使用一段时间的时候,这个时候远程桌面功能的粘贴板就没办法使用了。 正常情况下,不管我一个电脑远程了多少台电脑,那么这些电脑之间都是可以使用粘贴板的,可以用来从一个电脑中截了图,然后粘贴到另一个电脑中。 但是现…

解决sortablejs+el-table表格内限制回撤和拖拽回撤失败问题

应用场景: table内同一类型可拖拽,不支持不同类型拖拽(主演可拖拽交换位置,非主演和主演不可交换位置),类型不同拖拽效果需还原,试了好几次el-table数据更新了,但是表格样式和数据不能及时保持…

巡检机器人室内配电室应用

智能巡检系统实施背景 电力系统发展已进入电气化、自动化、智能化建设加速推进的新阶段,设备规模大幅增长,新设备、新技术加快应用,装备水平取得长足发展,与此同时设备规模大幅增长,新设备、新技术加快应用&#xff0…

Linux高级编程_26_shell

文章目录 shell概述:分类:语法:1、#!2、#3、执行:方式1:方式2:方式3: 注意: 第一个shell脚本变量变量的定义:变量的修改变量的取值撤销变量声明只读变量导出变量&#xf…

贝锐蒲公英网盘首发,秒建私有云,高速远程访问

虽然公共网盘带来了不少便利,但是大家对隐私泄露和重要数据泄密的担忧也随之增加。如果想要确保数据安全,自建私有云似乎是一条出路,然而面对搭建私有云的复杂步骤,许多人感到力不从心,NAS设备的成本也往往让人望而却步…

【软设】项目管理

【软设】项目管理 (要会根据Gantt和Pert图求关键路径,可以看3.3的示例来了解Pert图) 一.进度管理 进度管理 是项目管理的重要组成部分,旨在确保项目在规定的时间范围内完成。进度管理不仅包括项目活动的规划,还包括监控和控制项目活动的进…

制造企业如何提升项目管理效率?惠科股份选择奥博思PowerProject项目管理系统

全球知名的显示方案综合服务商 - 惠科股份有限公司与北京奥博思达成合作,基于奥博思 PowerProject 搭建企业级项目管理平台。满足惠科多产品多业务领域的项目全周期管理。助力企业在技术研发、产品创新等方面继续取得行业领先优势。 同时,PowerProject …

NLP任务之预测最后一个词

目录 1.加载预训练模型 2 从本地加载数据集 3.数据集处理 4.下游任务模型 5.测试代码 6.训练代码 7.保存训练好的模型 8. 加载 保存的模型 1.加载预训练模型 #加载预训练模型 from transformers import AutoTokenizer#预训练模型:distilgpt2 #use_fast…

论文笔记:Gradient Episodic Memory for Continual Learning

1. Contribution 提出了一组指标来评估模型在连续数据上的学习情况。这些指标不仅通过测试准确性来表征模型,还通过其跨任务迁移知识的能力来表征模型。针对持续学习任务,提出了GEM模型(Gradient Episodic Memory),它…

True NAS禁用ipv6

在 TrueNAS Scale 中,禁用 IPv6 的方法如下:12 进入 System->Advanced->Sysctl,设置一个 sysctl 可调整变量 net.ipv6.conf.all.disable_ipv6,值为 1,以完全禁用 IPv6。\

SOMEIP_ETS_139: SD_Options_Array_too_short

测试目的: 验证DUT能够拒绝一个选项数组长度短于所需的SubscribeEventgroup消息,并以SubscribeEventgroupNAck作为响应。 描述 本测试用例旨在确保DUT遵循SOME/IP协议,当接收到一个选项数组长度不足以包含所有必需选项的SubscribeEventgro…

【C++篇】启航——初识C++(上篇)

目录 引言 一、C的起源和发展史 1.起源 2.C版本更新 二、C在⼯作领域中的应⽤ 三、C入门建议 1.参考文档 2.推荐书籍 四、C的第一个程序 1.C语言写法 2.C写法 五、命名空间 1.为什么要有命名空间 2.定义命名空间 3.主要特点 4.使用示例 六、C输⼊&输出 …

【muduo源码分析】「阻塞」「非阻塞」「同步」「异步」

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 引言何为「muduo库」安装muduo库阻塞、非阻塞、同步、异步数据准备数据准备 引言 从本篇博客开始,我会陆续发表muduo库源码分析的相关文章。感谢大家的持续关注!!…

Vue|插件

在 Vue.js 中,插件是用来扩展 Vue 功能的一种方式,能够帮助开发者扩展和复用功能。通过合理使用插件,可以提高代码的组织性和可维护性 目录 如何使用插件?插件的定义创建及使用插件插件的参数插件的扩展 总结 如何使用插件? 插件的定义 插…

2-107 基于matlab的hsv空间双边滤波去雾图像增强算法

基于matlab的hsv空间双边滤波去雾图像增强算法,原始图像经过光照增强后,将RGB转成hsv,进行图像增强处理,使图像更加清晰。程序已调通,可直接运行。 下载源程序请点链接: 2-107 基于matlab的hsv空间双边滤…

论文阅读 | 可证安全隐写(网络空间安全科学学报 2023)

可证安全隐写:理论、应用与展望 一、什么是可证安全隐写? 对于经验安全的隐写算法,即使其算法设计得相当周密,隐写分析者(攻击者)在观察了足够数量的载密(含有隐写信息的数据)和载体…

推荐4款2024年热门的PDF转ppt工具

有时候,我们为了方便,需要将PDF里面的内容直接转换的PPT的格式,既方便自己演示和讲解,也让我们可以更加灵活的进行文件的编辑和修改。如果大家不知道要如何进行操作的话,我可以为大家推荐几个比窘方便实用的PDF转换工具…

html TAB、table生成

1. 代码 <!DOCTYPE html> <head> <meta charset"UTF-8"> <title>Dynamic Tabs with Table Data</title> <style> /* 简单的样式 */ .tab-content { display: none; border: 10px solid #ccc; padding: 30px; mar…

赛氪作媒体支持单位受邀参加首届科普翻译与跨学科专业学术研讨会

2024年9月22日&#xff0c;正值全国科普日之际&#xff0c;首届科普翻译与跨学科专业学术研讨会在上海健康与营养研究所信息中心励志厅成功举行并圆满结束。此次研讨会汇聚了来自全国各地的近60名专家学者、学界及企业界代表&#xff0c;共同探讨科普翻译与跨学科专业的发展。作…

BaseCTF2024 web

Web [Week1] HTTP 是什么呀 GET: ?basectf%77%65%31%63%25%30%30%6d%65POST: BaseflgX-Forwarded-For:127.0.0.1Referer: BaseCookie: c00k13i cant eat itUser-Agent: Base有Location跳转, 抓包得到flag: QmFzZUNURntkZGUzZjA0Yy1hMDg5LTQwNGMtOTFjNi01ODZjMzAxMzM3Y2J9Cg…