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之多元素控件到此结束

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLO11深度学习的心脏超声图像间隔壁检测分割与分析系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

二叉树链式结构:数据结构中的灵动之舞

目录 前言 一、 前置说明 二、二叉树的遍历 2.1前序遍历 2.2中序遍历 2.3 后序遍历 2.4层序遍历 三、二叉树的遍历的应用 3.1二叉树节点个数: 3.2二叉树的高度 3.3 二叉树第k层的节点的个数 3.4二叉树的查找 总结 前言 在数据结构的世界里,二叉…

Tomcat下载,安装,配置终极版(2024)

Tomcat下载,安装,配置终极版(2024) 1. Tomcat下载和安装 进入Apache Tomcat官网,我们可以看到这样一个界面。 现在官网目前最新版是Tomcat11,我用的是Java17,在这里我们选择Tomcat10即可。Tom…

Android Studio - Android Studio 查看项目的 Android SDK 版本(4 种方式)

一、通过项目级 build.gradle 文件 1、基本介绍 在项目级 build.gradle 文件中,查看 compileSdk、minSdk、targetSdk 字段 或者是 compileSdkVersion、minSdkVersion、targetSdkVersion 字段 // 看到的可能是android {compileSdk 32defaultConfig {minSdk 21tar…

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…

【AI】mac 本地部署 Dify 实现智能体

下载 Ollama 访问 Ollama 下载页,下载对应系统 Ollama 客户端。或者参考文章【实战AI】macbook M1 本地ollama运行deepseek_m1 max可以跑deepseek吗-CSDN博客 dify 开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力&am…

Jenkins介绍

什么是Jenkins Jenkins 是一个开源的自动化服务器,主要用于持续集成和持续交付(CI/CD)。它帮助开发团队自动化构建、测试和部署软件,从而提高开发效率和软件质量。 如果一个系统是前后端分离的开发模式,在集成阶段会需…

如何使用 vxe-table grid 全配置式给单元格字段格式化内容,格式化下拉选项内容

如何使用 vxe-table grid 全配置式给单元格字段格式化内容,格式化下拉选项内容 公司的业务需求是自定义配置好的数据源,通过在列中配置好数据,全 json 方式直接返回给前端渲染,不需要写任何格式化方法。 官网:https:/…

【弹性计算】IaaS 和 PaaS 类计算产品

《弹性计算产品》系列,共包含以下文章: 云服务器:实例、存储、网络、镜像、快照容器、裸金属云上运维IaaS 和 PaaS 类计算产品 😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀&#x1f680…

【Spring详解二】容器的基本实现

二、容器的基本实现 2.1 容器的基本用法 package com.xxx; public class Hello {public void sayHello() {System.out.println("Hello, spring");} } public static void main(String[] args) {//XmlBeanFactory 在 Spring3.1 以后废弃BeanFactory beanFactory ne…

计算机毕业设计Python考研院校推荐系统 考研分数线预测 考研推荐系统 考研可视化(代码+LW文档+PPT+讲解视频)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

Ubuntu 系统 LVM 逻辑卷扩容教程

Ubuntu 系统 LVM 逻辑卷扩容教程 前言 在 Linux 系统中,LVM(Logical Volume Manager)是一种逻辑卷管理工具,允许管理员动态调整磁盘空间,而无需重启系统。 本文将详细介绍如何使用 LVM 扩容逻辑卷,以实现…

大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1)

大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1) Apache Paimon 是一项流式数据湖存储技术,可以为用户提供高吞吐、低延迟的数据摄入、流式订阅以及实时查询能力。 读/写:Paimon 支持多种读/写数据和执行 OLAP 查询的方式。 对于读取&#x…

3分钟了解内外网文件传输:常见方法、注意事项有哪些?

内外网文件传输不仅是企业日常运营的基础设施,更是支持业务增长、创新和合规的关键工具。通过高效、安全的文件传输,企业能够更好地应对全球化协作、远程办公和数据安全等挑战,从而在竞争激烈的市场中保持领先地位。 一、内外网文件传输的常…

洛谷P11042 [蓝桥杯 2024 省 Java B] 类斐波那契循环数

像是这种填空题的话&#xff0c;就直接暴力还更加省时间&#xff0c;在本地算完后直接提交答案即可 #include<bits/stdc.h> using namespace std;const int N 10000000;bool isnumber(int n) {vector<int> a;int m n;while (n > 0) {a.push_back(n % 10);n / …

3月营销日历:开启春日盛宴,绽放生活魅力

关键营销节点∶惊蛰、女生节、妇女节、 植树节、315消费者权益日、春分 营销关键词 养生、女生魅力、感恩女性、环保、品质 01.重点关注品类 春季服饰&#xff1a;如轻薄外套、春装等&#xff0c;适合惊蛰后的市场需求&#xff1b; 美妆护肤&#xff1a;妇女节期间&#xf…

未来游戏:当人工智能重构虚拟世界的底层逻辑

未来游戏&#xff1a;当人工智能重构虚拟世界的底层逻辑 在《赛博朋克2077》夜之城的霓虹灯下&#xff0c;玩家或许已经注意到酒吧里NPC开始出现微表情变化&#xff1b;在《艾尔登法环》的开放世界中&#xff0c;敌人的战术包抄逐渐显露出类人智慧。这些细节预示着游戏产业正站…

知识拓展:设计模式之装饰器模式

装饰器模式拓展 1. 什么是装饰器模式&#xff1f; 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。装饰器模式通过创建一个装饰类来包装原始类&#xff0c;从而在不修…

利用 OpenCV 进行棋盘检测与透视变换

利用 OpenCV 进行棋盘检测与透视变换 1. 引言 在计算机视觉领域&#xff0c;棋盘检测与透视变换是一个常见的任务&#xff0c;广泛应用于 摄像机标定、文档扫描、增强现实&#xff08;AR&#xff09; 等场景。本篇文章将详细介绍如何使用 OpenCV 进行 棋盘检测&#xff0c;并…

MySQL智障离谱问题,删了库确还存在、也不能再创建同名库

1、问题 今天跟后端朋友接毕设单子的时候&#xff0c;后端穿过来的【weather.sql】这个文件没弄好&#xff0c;导致这个【weather】数据库的数据是错的&#xff0c;因此我用datagrip的GUI界面直接右键删除&#xff0c;结果就是tmd删不掉&#xff0c;ok&#xff0c;我只能在那新…