【Qt】多元素控件:QListWidget、QTableWidget、QTreeWidget

news2025/2/28 5:10:55

目录

QListWidget

核心属性:

核心方法:

核心信号:

例子:

QListWidgetItem

QTableWidget

核心方法:

核心信号

QTableWidgetItem

例子:

QTreeWidget

核心方法:

核心信号:

例子:

 QTreeWidgetItem


多元素控件有QListWidget、QListView、QTableWidget、QTableView、QTreeWidget、QTreeView,可以看到这些控件有xxxWidget和xxxView之分。xxxWidget其实是xxxView的子类。xxxView是基于MVC软件框架模式下的控件。

MVC(Model View Controller):一种软件框架模式,由模型、视图、控制器三个组件组成。

Model:承担着管理应用程序数据和业务逻辑的责任,在模型中数据被有效的管理、存储和操作,包括从各种数据源获取数据、对数据进行验证和处理、执行业务规则、确保数据变化时其他组件(视图和控制器)能够即使获取到更新的数据。

View:负责将模型中的的数据呈现给用户,并接收用户的输入。

Controller:接收请求并调用相应的处理方法,将模型返回的数据进行处理传递给视图,确保数据能够被正确的显示在视图中。

xxxView需要使用者自己创建Model对象,比如QStandardModel,并把Model和xxxView关联起来,后续修改Model中的数据就会影响xxxView的显示。而xxxWidge是xxxView的子类,封装了xxxView不需要使用者创建Model对象,直接就可以向xxxWidget中添加数据了。

下面是对于xxxWidget控件的介绍:

QListWidget

表示纵向显示的列表

核心属性:

currentRow:当前选中的是列表中的第几行。行号是从0开始表示。

count:一共有多少行。

sortingEnabled:是自动排序列表中元素。

isWrapping:是否允许换行。

itemAlignment:元素的对齐方式。

selectionRectVisible:是否显示被选中元素。

spacing:元素之间的距离。

核心方法:

1.向列表中添加元素,可以通过QString或QListWidgetItem*的形式向列表中添加元素。

注意:QListWidgetItem*的形式向列表中添加元素的时候,此时需要new一个QListWidgetItem对象,在堆上开辟的该对象内存空间,会被挂到一个它的列表对象上之后统一析构,我们不用对其释放。

2.当前选中的元素的指针(返回指针我们是可以修改这个元素的内容的)

3.设置当前要选中那个元素

4.在指定位置插入元素

5.返回某行元素

6.删除某行元素。返回该行的元素对象指针

核心信号:

1.当选中别的元素时触发。current是当前选中元素的指针,previous是上一次选中元素的指针;row是当前选中元素的函数。

2.点击,双击某个元素时会触发。

例子:

当选中一个元素时,打印出上一次选中的元素和当前选中的元素;点击add按钮向列表中增加单行输入框中的内容,点击delete按钮删除选中的元素。

执行程序,可以新增元素,删除选中的元素。

QListWidgetItem

QListWidgetIitem就是QListWidget中的一个元素,可以由文本+图标构成。

核心方法:

 

QTableWidget

表示一个表格控件。一个表格中包含若干行,每一行有包含若干列。

表格中的每个单元格都是一个QTableWidgetItem

核心方法:

1.根据指定的行数,列数获取表格中的元素

2.设置指定的行数,列数的表格中元素

3.返回当前选中的元素,该元素所在的行,列

4.返回指定的item所在的列,行

 5.获取表格的行数,列数

6.清理表格,再第row行处插入新行,删除第row行

7.setHorizontalHeaderItem是设置指定列的描述信息

核心信号

cell:单元格。

QTableWidgetItem

构造:

和QListWidgetItem大多数方法一样。

获取该QTableWidgetItem对象在表格中的第几列,行:

例子:

QTreeWidget

表示一个树形控件,树形控件的元素分为顶层元素顶层元素下的子元素(子元素下可以继续添加子元素),这些元素都是QTreeWidgetItem类型的,可以向每个元素下添加新元素,每个QTreeWidgetItem的内容可以是文本/图标,每个文本/图标代表一个列。

核心方法:

1.向QTreeWidget添加顶层元素

2.获取指定下标的顶层元素;获取顶层元素的个数

3.获取顶层元素的下标

4. 删除顶层元素,返回值是删除的顶层元素

5.获取当前选中的元素

6.设置QTree的名称

核心信号:

例子:

点击按钮来实现这些功能:向QTreeWidget中添加顶层元素(QTreeWidgetItem)、向选中的元素中添加元素(QTreeWidgetItem)、删除选中的元素(QTreeWidgetItem)

 QTreeWidgetItem

QTreeWudgetItem和上面的QListWidgetItem大多数方法都是一样的,有下面几个独有的:

设置元素是否可用,设置元素是否展开:

注意:QTreeWidgetItem中的setText方法是有两个参数,第一个参数表示的是第几列,一般都是第0列。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML5 标签输入框(Tag Input)详解

HTML5 标签输入框(Tag Input)详解 标签输入框(Tag Input)是一种用户界面元素,允许用户输入多个标签或关键词,通常用于表单、搜索框或内容分类等场景。以下是实现标签输入框的详细讲解。 1. 任务概述 标…

前端加载自己制作的栅格切片服务充当底图

注意mapview的center属性和tilelayer.fullExtent的区别。 前者是设置mapview显示的中心点坐标, const view new MapView({ container: "viewDiv", map: map, center:[100,25] }); 后者是读…

Windows 安装Mysql 8.1.0版本,并迁移数据库

一、下载MySQL压缩包 进入MySQL官网:https://downloads.mysql.com/archives/community/ 下载zip包到本地,然后解压缩。 二、安装MySQL 1、 创建my.ini文件 新创建一个my.ini文件,文件内容如下,记得修改【basedir】和【datadir…

uniapp——微信小程序,从客户端会话选择文件

微信小程序选择文件 文章目录 微信小程序选择文件效果图选择文件返回数据格式 API文档: chooseMessageFile 微信小程序读取文件,请查看 效果图 选择文件 /*** description 从客户端会话选择文件* returns {String} 文件路径*/ const chooseFile () &g…

学习threejs,导入CTM格式的模型

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.ColladaLoader DAE模…

1、pycharm、python下载与安装

1、去官网下载pycharm 官网:https://www.jetbrains.com/pycharm/download/?sectionwindows 2、在等待期间,去下载python 进入官网地址:https://www.python.org/downloads/windows/ 3、安装pycharm 桌面会出现快捷方式 4、安装python…

虚拟机Centos下安装Mysql完整过程(图文详解)

目录 一. 准备工作 1. 设置虚拟机静态IP 2. 卸载Mysql 3. 给CentOS添加rpm源 二. 安装MySQL 1. 安装mysql服务 2. 启动mysql服务 3. 开启MySQL开机自启动 4. 查看mysql服务状态 5. 查看mysql初始密码 6. 登录mysql ,修改密码 7. 允许外部访问MySQL数据库…

SwiftUI:多语言实现富文本插值

实现的UI需求: 要求: 英文显示:3068 people have joined this plan today! 中文显示:今日有 3068 人已加入此计划! 实现代码: Text(AttributedString(localized:"**\(payPeoples)** people have joi…

中巨伟业推出高安全高性能32位智能卡内核可编程加密芯片SMEC88SP/ST

1、产品特性  以最高安全等级的智能卡芯片内核为基础,具有极高的软硬件安全性  实现客户关键功能或算法代码下载,用户可以灵活实现自有知识产权的保护  标准 SOP8、SOT23-6 封装形式,器件封装小  标准 I2C 接口,具有接…

部署SenseVoice

依赖 Conda cuda pythor 查看GPU版本-CSDN博客 创建虚拟conda环境 conda create --name deeplearn python3.10 conda activate deeplearn git clone https://github.com/FunAudioLLM/SenseVoice.git cd SenseVoice pip install -r requirements.txt pip install gradio pip …

微信流量主挑战:用户数30!新增文档转化功能,解决docker运行jar包报错SimSun找不到的问题(新纪元5)

哎呀,今天忙到飞起,文章晚点更新啦!不过好消息是,我们的小程序用户终于突破30啦,感谢大家的支持!而且,大家期待已久的文档转化功能明天就要上线啦,目前支持word转pdf,pdf…

操作系统课后题总复习

目录 一、第一章 1.1填空题 1.2单项选择题 1.3多项选择题 1.4判断题 1.5名词解释 1.6简答题 二、第二章 2.1填空题 2.2单项选择题 2.3 多项选择题 2.4判断题 2.5名词解释 2.6简答题 三、第三章 3.1填空题 3.2单项选择题 3.3多项选择题 3.4判断题 3.5名词解…

C语言期末复习笔记(下)

目录 九、指针 1.指针变量的定义和初始化 2.间接寻址符* 3.按值调用和按址调用 4.实例 5.函数指针 6.指针变量和其它类型变量的对比 十、字符串 1.字符串常量 2.字符串的存储 3.字符指针 4.字符串的访问和输入/输出 5.字符串处理函数 (1)str…

保姆级教程Docker部署ClickHouse镜像

目录 1、安装Docker及可视化工具 2、创建挂载目录 3、获取配置文件 4、运行ClickHouse容器 5、Compose运行ClickHouse容器 6、查看ClickHouse运行状态 7、安装包部署 1、安装Docker及可视化工具 Docker及可视化工具的安装可参考:Ubuntu上安装 Docker及可视化…

飞牛私有云APP结合cpolar内网穿透技术实现远程连接本地fnOS NAS

文章目录 前言1. 本地连接测试2. 飞牛云安装Cpolar3. 配置公网连接地址4. 飞牛云APP连接测试5. 固定APP远程地址6. 固定APP地址测试 前言 现在生活和工作中的各种设备都变得越来越智能,而数据存储的需求也随之剧增。想象一下:你正在外地出差&#xff0c…

计算机网络 (17)点对点协议PPP

一、PPP协议的基本概念 PPP协议最初设计是为两个对等节点之间的IP流量传输提供一种封装协议,它替代了原来非标准的第二层协议(如SLIP)。在TCP/IP协议集中,PPP是一种用来同步调制连接的数据链路层协议(OSI模式中的第二层…

RC充电电路仿真与分析

RC充电原理 下图是一个常见的RC充电电路:(假设R10K,C100nF) SW断开时,这个电路处于断路状态,C既没有充电也没有放电;SW闭合时,直流电源5V为电容C充电; 充电时电容两端…

全新免押租赁系统助力商品流通高效安全

内容概要 全新免押租赁系统的推出,可以说是一场商品流通领域的小革命。想象一下,不再为押金烦恼,用户只需通过一个简单的信用评估,就能快速租到所需商品,这种体验简直令人惊喜!这个系统利用代扣支付技术&a…

c++领域展开第八幕——类和对象(下篇 初始化列表、类型转换、static成员)超详细!!!!

文章目录 前言一、初始化列表二、类型转换三、static成员总结 前言 上篇博客我们实现了一个简单的日期类,基本的类和对象是清楚了 今天我们再来学习后面的一些类和对象的语法,慢慢的完善所学的东西 fellow me 一、初始化列表 • 之前我们实现构造函数时…

Linux-Ubuntu之RGBLCD显示屏

Linux-Ubuntu之RGBLCD显示屏 一,实现原理二,驱动代码三,总结1.c语言知识 一,实现原理 采用的是4.3寸 800480显示屏,即每行有800个像素点,每列有480个像素点,外接时钟信号,控制刷新频…