Qt:多元素控件

目录

多元素控件介绍

QListWidget

QTableWidget

QTreeWidget


多元素控件介绍

多元素控件表示这个控件中包含了很多的元素,元素可能指的是字符串,也可以指的是更加复杂的数据结构、图片等等

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

  • QListWidget
  • QListView
  • QTableWidget
  • QTableView
  • QTreeWidget
  • QTreeView

上述前两个表示列表,中间两个表示表格,后两个表示树形

xxWidget vs xxView 的区别:

  • xxView 是更底层的实现
  • xxWidget 是基于 xxView 封装而来的
  • 此处 xxView 是 MVC 结构的一种典型实现
    M model 数据
    Vview视图 (界面)
    C controller 控制器 数据和视图之间的业务流程

此处 xxView 只是负责实现了视图,不负责数据如何存储表示,更不负责数据和视图之间的交互,因此如果使用 xxView,就需要程序员自己实现 model 和 controller 的部分,就比较麻烦

xxWidget 基于 xxView,同时把 model 和 controller 都帮我们实现好了,拿过来就可以使用,人家提供了功能很方便的 api,让我们直接用

  • xxView:使用起来更麻烦一些,但是可以根据情况来自由 diy,实现更复杂的功能
  • xxWidget:使用比较方便,但是功能比较有限

QListWidget

使用 QListwidget 能够显示一个纵向的列表

核心属性:


核心方法:

  • 列表中的每个元素/每一项就称为是一个 ltem,更具体的说,是通过 QListWidgetltem 类表示的
  • addItem 默认在末尾插入,insertItem 可以指定在第几行插入,row就表示插入完毕后新的元素在第几行

核心信号:


图形化界面的方式拖动 ListWidget、输入框 LineExit、两个 pushButton:

接着初始化 ListWidget,有两种方式:

第一种是图形化界面中,右键 QListwidget选择编辑项目,就可以直接添加内容

第二种是通过代码的方式,在构造函数中添加:


下面设置新增和删除两个按钮的槽函数:

效果如下,初始是三个内容:

如果输入内容,点击新增,就会默认新增到末尾(因为代码中使用的是 addItem):

选中左边列表的 Python,点击删除,就会删除掉:

也可以完善 ListWidget 的槽函数,每次选中时打印此次和上一次选中的内容:

运行程序:


QTableWidget

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

核心方法:


核心信号:


核心方法:


图形化界面的方式创建:

并将这四个按钮的 objectName 设置好:


表格中输出数据的设置,与 QListWidget 一样,既可以使用图形化界面的方式,也可以使用代码的方式

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

下面使用代码的方式进行设置:

运行程序:

下面完成四个按钮的槽函数:

运行程序,初始为:

点击新增一行:

选中4和5行,点击删除选中行:

输入框中输入年级,并点击新增一列:

选中年级那一列,点击删除选中列:


QTreeWidget

使用 QTreeWidget 表示一个树形控件,里面的每个元素,都是一个 QTreeWidgetItem
每个QTreewidgetItem 可以包含多个文本和图标,每个文本/图标为一个列

可以给 QTreewidget 设置顶层节点(顶层节点可以有多个),然后再给顶层节点添加子节点,从而构成树形结构

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

QTreeWidget 可以理解为 QTableWidget 的进化版本

  • QTableWidget 固定一行中有很多列
  • QTreeWidget 它是一个树形结构,树形结构中的每一个结点又可以包含多个列

QTreeWidget 核心方法:


QTreeWidget 核心信号:


QTreeWidgetItem核心属性:


QTreeWidgetItem 核心方法:


图形化界面的方式创建 tree Widget、输入框、三个按钮

并将按钮的 objectName 改为:

下面就需要初始化数据了,也是有两种方式

第一种,右键编辑项目

如下所示:

点击确定:

此时运行程序:

上述的 1 表示根节点的名字,可以手动修改


但是实际开发中,很多时候数据是从文件/网络来加载的,此时通过图形化编辑不合适,所以就需要使用
第二种,代码的方式

在构造函数中添加代码: 

此时运行程序,与刚刚的效果一样:


下面实现三个按钮的功能:

pushButton_insertTopLevelItem:

pushButton_insertItem:

pushButton_deleteItem:


上述这几个控件相关的操作,数据都是在内存中保存的,无论在界面上做任何操作,重新运行程序,之前的数据就都没了

如果要想让数据能够重启也不丢失,就需要编写更多的代码,把内存存储的数据获取到,写入到文件中,并且在下次运行的时候从文件加载数据 


Qt之多元素控件到此结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/971975.html

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

相关文章

DeepSeek 助力 Vue 开发:打造丝滑的范围选择器(Range Picker)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

STL —— 洛谷字符串(string库)入门题(蓝桥杯题目训练)(一)

目录 一、B2109 统计数字字符个数 - 洛谷 算法代码: 1. 引入库和命名空间 2. 主函数 3. 读取输入 4. 变量初始化 5. 遍历字符串 6. 输出结果 7. 返回值 总结 评测记录: 二、B2110 找第一个只出现一次的字符 - 洛谷 方法一:算法代…

Golang GORM系列:GORM并发与连接池

GORM 是一个流行的 Go 语言 ORM(对象关系映射)库,用于简化数据库操作。它支持连接池和并发访问功能,这些功能对于高性能、高并发的应用场景非常重要。本文结合示例详细介绍gorm的并发处理能力,以及如何是哟个连接池提升…

C#之上位机开发---------C#通信库及WPF的简单实践

〇、上位机,分层架构 界面层 要实现的功能: 展示数据 获取数据 发送数据 数据层 要实现的功能: 转换数据 打包数据 存取数据 通信层 要实现的功能: 打开连接 关闭连接 读取数据 写入数据 实体类 作用: 封装数据…

Ubuntu24安装MongoDB(解压版)

目录 0.需求说明1.环境检查2.下载软件2.1.下载MongoDB服务端2.2.下载MongoDB连接工具(可略过)2.3.检查上传或下载的安装包 3.安装MongoDB3.1.编辑系统服务3.2.启动服务3.3.客户端连接验证3.3.1.创建管理员用户 4.远程访问4.1.开启远程访问4.2.开放防火墙 0.需求说明 问&#x…

《DeepSeek-V3:人工智能大语言模型》

《DeepSeek-V3:人工智能大语言模型》 1. 引言 我们介绍了 DeepSeek-V3,这是一个强大的专家混合 (MoE) 语言模型,总共有 671B 个参数,每个令牌激活了 37B。 为了实现高效的推理和具有成本效益的训练,DeepSeek-V3 采用了多头潜在注意力 (MLA) 和 DeepSeekMoE 架构,这些…

解锁机器学习核心算法 | K -近邻算法:机器学习的神奇钥匙

一、引言 今天我们继续学习机器学习核心算法 —— K - 近邻(K-Nearest Neighbors,简称 KNN)算法。它就像是一位经验丰富的 “老江湖”,以其简单而又强大的方式,在众多机器学习任务中占据着不可或缺的地位。 K - 近邻…

算法分析—— 《归并排序》

《排序数组》 题目描述: 给你一个整数数组 nums,请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。 示例 1: 输入:nums [5,2…

linux云服务器部署deepseek,并通过网页访问

参考视频:https://www.douyin.com/root/search/linux%E5%AE%89%E8%A3%85%20deepseek?aid3aa2527c-e4f2-4059-b724-ab81a140fa8b&modal_id7468518885570940214&typegeneral 修改ollama配置文件 vim /etc/systemd/system/ollama.service 我的电脑硬盘只有4…

FastAdmin后端列表导入表格数据

后台添加数据的时候增加通过表格导入功能 如下图index.html页面增加导入和模板下载按钮代码如下 <div class"panel panel-default panel-intro">{:build_heading()}<div class"panel-body"><div id"myTabContent" class"ta…

可调节图片参数,解决图片模糊及尺寸过小问题的工具

软件介绍 你是否正为图片模糊、尺寸太小而烦恼&#xff1f;别担心&#xff0c;有这样一款神器能帮你轻松解决。它能精准调节图片参数&#xff0c;即便原本模糊不清的图片&#xff0c;经它处理后也能变得高清锐利&#xff0c;瞬间让图片焕然一新。而且&#xff0c;它还具备导出…

Windows网络安全基础

随着互联网的发展和普及&#xff0c;Windows网络安全问题愈发严重。在本文中&#xff0c;我们将会介绍Windows网络安全的基本概念&#xff0c;包括网络攻击类型、网络安全威胁、网络安全防御措施等等&#xff0c;帮助初学者更好地了解Windows网络安全。 一、网络攻击类型 网络…

代码补全『三重奏』:EverEdit如何用上下文识别+语法感知+智能片段重构你的编码效率!

1 代码自动完成 1.1 应用场景 在编辑文档时&#xff0c;为了提高编辑效率&#xff0c;编辑器一般都会带有自动完成功能&#xff0c;比如&#xff1a;输入括号时自动补全另一半&#xff0c;输入文字时&#xff0c;自动补全剩下的部分。 1.2 使用方法 1.2.1 自动缩进 单击主菜…

vue,vue3 keepalive没有效果,无法缓存页面include无效,keep-alive

keepalive没有效果&#xff0c;无法缓存页面&#xff1f; 问题大概是组件的name值不对应&#xff0c;vue2修改组件文件的name值&#xff0c;vue3保持组件文件名称和路由页面配置的name一致就可以了&#xff0c;如果vue3不想保持一致&#xff0c;必须手动在文件后面添加export..…

栈回溯方案

注&#xff1a;栈回溯无法很好的定位到未调优化的函数&#xff0c;需要编译前使用 -fno-optimize-sibling-calls 选项禁止尾调优化。 基于unwind的栈回溯 在 arm 架构下&#xff0c;不少32位系统用的是 unwind 形式的栈回溯&#xff0c;这种栈回溯要复杂很多。首先需要程序有一…

【存储中间件API】MySQL、Redis、MongoDB、ES常见api操作及性能比较

常见中间件api操作及性能比较 ☝️ MySQL crud操作✌️ maven依赖✌️ 配置✌️ 定义实体类✌️ 常用api ☝️ Redis crud操作✌️ maven依赖✌️ 配置✌️ 常用api ☝️ MongoDB crud操作✌️ maven依赖✌️ 配置文件✌️ 定义实体类✌️ MongoDB常用api ☝️ ES crud操作 ⭐️…

解锁D3.js与PlantUML的交互奥秘:探索知识图谱数据可视化新领域

解锁D3.js与PlantUML的交互魔法&#xff1a;数据可视化新征程 在前端开发的广袤天地里&#xff0c;数据可视化一直是一颗璀璨的明珠&#xff0c;吸引着无数开发者探索其奥秘。而当D3.js这一强大的JavaScript库&#xff0c;遇上专注于创建UML图的PlantUML&#xff0c;一场奇妙的…

DeepSeek24小时写作机器人,持续创作高质量文案

内容创作已成为企业、自媒体和创作者的核心竞争力。面对海量的内容需求&#xff0c;人工创作效率低、成本高、质量参差不齐等问题日益凸显。如何在有限时间内产出高质量内容&#xff1f;DeepSeek写作机器人&#xff0c;一款24小时持续创作的智能工具&#xff0c;为企业和个人提…

使用html css js 来实现一个服装行业的企业站源码-静态网站模板

最近在练习 前端基础&#xff0c;html css 和js 为了加强 代码的 熟悉程序&#xff0c;就使用 前端 写了一个个服装行业的企业站。把使用的技术 和 页面效果分享给大家。 应用场景 该制衣服装工厂官网前端静态网站模板主要用于前端练习和编程练习&#xff0c;适合初学者进行 HT…

使用html css js 开发一个 教育机构前端静态网站模板

这个教育机构网站模板是专为前端开发初学者设计的练习项目&#xff0c;适合正在学习前端的学生或自学者使用。网站内容包括首页、课程体系、师资力量、关于我们和联系我们等基础页面&#xff0c;帮助学习者熟悉网页布局、样式设计和交互功能的实现。 静态页面 简单截图 应用…