QT多元素控件及其属性

news2025/7/19 20:58:53

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

QListWidget

QListView

QTableWidget

QTableView

QTreeWidget

QTreeView

widget和view多元素控件的区别:

view是更底层的实现,widget是基于view封装而来,view是MVC结构的一种典型实现

MVC结构:

  1. --model数据

V---view视图(界面)

C---controller控制器 数据和视图之间的业务流程

此处的view多元素控件只负责实现了视图,不负责数据如何存储表示,无控制器

因此如果要使用view的多元素控件就要自己实现model和controller的部分

而widget多元素控件基于view多元素控件同时把model和controller都实现好了,有可用直接使用的接口

List Widget

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

如:

核心属性

属性

说明

currentRow

当前被选中的是第几行

count

一共有多少行

sortingEnabled

是否允许排序

isWrapping

是否允许换行

itemAlignment

元素的对齐方式

selectRectVisible

被选中的元素矩形是否可见

spacing

元素之间的间隔

核心方法

方法

说明

addItem(const QString& label)

addItem(QListWidgetItem *item)

列表中添加元素

currentItem

返回QListWidgetItem* 表示当前

选中的元素

setCurrentItem(QListWidget* item)

设置选中哪个元素

setCurrentRow(int row)

设置选中第几行的元素

insertItem(const QString& label,int

row)

在指定位置插入元素

item(int row)

返回QListWidgetItem* 表示row

行的元素

takeItem(int row)

删除指定行的元素,返回

QListWidgetItem* 表示哪个元素

被删除了

核心信号

信号

说明

currentItemChanged(QListWidget*

current,QListWidgetItem* old)

选中不同元素时会触发,参数是

当前选中的元素和之前选中的元

currentRowChanged(int)

选中不同元素时会触发,参数是

当前选中元素的行数

itemClicked(QListWidgetItem* item)

点击某个元素时触发

itemDoubleClicked(QListWidgetItem* item)

双击某个元素时触发

itemEntered(QListWidgetItem* item)

鼠标进入元素时触发

例:

在ui界面创建一个ListWidget,一个lineEdit,两个pushButton

实现输入框接收内容插入到listWidget中

在构造函数进行ListWidget的元素添加

还可用在ui界面通过右键ListWidget控件选中编辑项目进行元素添加

添加三个元素后转到新增按钮的槽函数

再转到删除按钮的槽函数

就可以通过按钮配合输入框实现LineEdit中元素的新增与删除

Tabel Widget

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

TableWidget核心方法

方法

说明

item(int row,int column)

根据行数列数获取指定的QTableWidgetItem*

setItem(int row,int

column,TableWidget*)

根据行数列数设置表格中的元素

currentnItem()

返回被选中的元素

QTableWidgetItem*

currentRow()

返回被选中元素是第几行

currentColumn()

返回被选中的元素是第几列

row(QTableWidgetItem*)

获取指定item是第几行

column(QTableWidgetItem*)

获取指定item是第几列

rowCount()

获取行数

columnCount()

获取列数

insertRow(int row)

在row行处插入新行

insertColumn(int column)

在column列插入新列

removeRow(int row)

删除第row行

removeColumn(int column)

删除第column列

setVerticalHeaderItem(int row,QTableWidget*)

设置指定行的表头

setHorizeontalHeaderItem(int row,QTableWidget*)

设置指定列的表头

核心信号

信号

说明

cellClicked(int row,int column)

点击单元格时触发

cellDoubleClicked(int row,int

column)

双击单元格时触发

cellEntered(int row,int column)

鼠标进入单元格时触发

currentCellChanged(int row,int

column,int previousRow,int

previousColumn)

选中不同单元格时触发

QTableWidgetItem核心方法

方法

说明

row()

获取当前是第几行

column()

获取当前是第几列

setText(const QString&)

设置文本

setTextAlignment(int)

设置文本对齐

setIcon(const QIcon&)

设置图标

setSelected(bool)

设置被选中

setSizeHints(const QSize&)

设置尺寸

setFont(const QFont&)

设置字体

例:

在ui界面创建一个TableWidget,四个功能按钮,一个lineEdit用于接收列名

在构造函数对lineEdit进行初始化

在构造函数对表格数据进行初始化

再尝试给表格添加数据

转到新增一行按钮的槽函数进行实现

转到删除选中行的槽函数进行实现

转到新增一列的槽函数进行实现

转到删除选中列槽函数进行实现

从而实现通过按钮控制表格

TreeWidget

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

可以给TreeWidget设置顶层节点(可以有多个),然后给顶层阶段添加字节到,从而构成树形结构

TreeWidget核心方法

方法

说明

clear

清空所有子节点

addTopLevelItem(QTreeWidgetItem* item)

新增顶层节点

topLevelItem(int index)

获取指定下标的顶层节点

topLevelItemCount()

获取顶层节点个数

indexOfTopLevelItem(QTreeWidgetItem

*item)

查询指定节点在顶层节点下的下标

takeTopLevelItem(int index)

删除指定的顶层节点,返回QTreeWidgetItem*表示被删除的元素

currentItem()

获取到当前选中的节点,返回QTreeWidgetItem*

setCurrentItem(QTreeWidgetItem* item)

选中指定节点

setExpanded(bool)

展开/关闭节点

setHeaderLabel(const QString& text)

设置TreeWidget的header名称

TreeWidget核心信号

信号

说明

currentItemChanged(QTreeWidgetItem*

current,QTreeWidgetItem* old)

切换选中元素时触发

itemClicked(QTreeWidgetItem* item,int col)

点击元素时触发

itemDoubleClicked(QTreeWidget* item,int col)

双击元素时触发

itemEntered(QTreeWidgetItem* item,int col)

鼠标进入时触发

itemExpanded(QTreeWidgetItem* item)

元素被展开时触发

itemCollapsend(QTreeWidget* item)

元素被折叠时触发

QTreeWidgetItem核心属性

属性

说明

text

持有的文本

textAlignment

文本对齐方式

icon

持有的图标

font

文本字体

hidden

是否隐藏

disabled

是否禁用

expand

是否展开

sizeHint

尺寸大小

selected

是否被选中

QTreeWidgetItem核心方法

方法

说明

addChild(QTreeWidgetItem* child)

新增子节点

childCount()

子节点的个数

child(int index)

获取指定下标的子节点,返回QTreeWidgetItem*

takeChild(int index)

删除对应下标的子节点

removeChild(QTreeWidgetItem*    

child)

删除对应的子节点

parent()

获取该元素的父节点

例:

在ui界面创建一个TreeWidget,一个lineEdit作为输入框,用来添加新节点,3个pushButton分别用来实现不同的功能

在构造函数对lineEdit的提示内容进行初始化

在构造函数对TreeWidget设置根节点名字,插入元素

转到添加顶层按钮的clicked信号的槽函数进行实现

转到添加选中元素按钮的clicked信号的槽函数进行实现

转到删除选中元素按钮的clicked槽函数进行实现

实现了通过按钮添加元素,删除元素的操作

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

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

相关文章

如何快速高效学习Python?

如何快速高效学习Python? How to Fastly and Effectively Learn Python Programming? By JacksonML 1. Python年轻吗? Python自1991年诞生到现在,已经经历了三十四年或者更长时间了。毕竟,Python之父 – 吉多范罗苏姆先生(Gu…

【网络原理】TCP提升效率机制(二):流量控制和拥塞控制

目录 一. 前言 二. 流量控制 三. 拥塞控制 一. 前言 TCP的可靠传输依靠确认应答机制,超时重传机制是对确认应答的一种补充,解决了丢包问题 为了提高传输效率,避免大量的时间都浪费在等待应答的过程,故引入了滑动窗口机制&…

语音合成之六端到端TTS模型的演进

端到端TTS模型的演进 引言Tacotron:奠基之作FastSpeech:解决效率瓶颈VITS:实现高保真和富有表现力的语音SparkTTS:利用LLM实现高效可控的TTSCosyvoice:一种可扩展的多语种TTS方法端到端TTS模型的演进与未来方向 引言 …

Properties配置文件

Properties(是一个特殊的Map)默认键值都是String类型 备注:Properties能调用Map中的所有方法,但由于放入Properties中的key-value都是String类型,Properties中提供了特殊的存值和取值的方法,所以尽量不要用Map中的方法,如下 Properties的作用 A、将内存中的数据写入到…

【尚硅谷Redis6】自用学习笔记

Redis介绍 Redis是单线程 多路IO复用技术(类似黄牛买票) 默认有16个库,用select进行切换 默认端口号为6379 Memcached:多线程 锁(数据类型单一,不支持持久化) 五大常用数据类型 Redis key …

Vue里面elementUi-aside 和el-main不垂直排列

先说解决方法 main.js少导包 import element-ui/lib/theme-chalk/index.css; //加入此行即可 问题复现 排查了一个小时终于找出来问题了,建议导包去看官方的文档,作者就是因为看了别人的导包流程导致的问题 导包官网地址Element UI导包快速入门

VS Code搭建C/C++开发环境

文章目录 一、VScode 是什么?二、VScode的下载和安装1、下载2、安装 三、环境介绍1、安装中文插件 四、VScode配置 C/C开发环境1、下载MinGW-w64 编译器套件2、配置MingGW643、验证4、安装C/C插件 五、在VSCode上编写C语言代码并编译成功1、打开文件夹2、新建C语言文件&#x…

mysql 在 dbeaver中下载驱动失败处理

直接上解决方法 1. 在mysql官网下载驱动 2. 引入dbeaver中即可 3. 最后再双击即可

Java 安全:如何防止 SQL 注入与 XSS 攻击?

Java 安全:如何防止 SQL 注入与 XSS 攻击? 在 Java 开发领域,安全问题至关重要,而 SQL 注入和 XSS 攻击是两种常见的安全威胁。本文将深入探讨如何有效防止这两种攻击,通过详细代码实例为您呈现解决方案。 一、SQL 注…

fastbev mmdetection3D 角度和方向损失

角度/方向损失 sin(a−b)sinacosb−cosasinb config参数 dir_offset0.7854, # pi/4 dir_limit_offset0, box编解码 # Copyright (c) OpenMMLab. All rights reserved. import torchfrom mmdet.core.bbox import BaseBBoxCoder from mmdet.core.bbox.builder import BBOX_COD…

一种专用车辆智能配电模块的设计解析:技术革新与未来展望

关键词:智能配电模块、STM32、CAN总线、电子开关、新能源汽车 引言:传统配电系统的痛点与智能化转型 传统配电系统依赖继电器和保险丝,存在体积大、寿命短、智能化低等缺陷(如图1)。而新能源汽车和无人驾驶技术对配电…

《深入浅出ProtoBuf:从环境搭建到高效数据序列化》​

ProtoBuf详解 1、初识ProtoBuf2、安装ProtoBuf2.1、ProtoBuf在Windows下的安装2.2、ProtoBuf在Linux下的安装 3、快速上手——通讯录V1.03.1、步骤1:创建.proto文件3.2、步骤2:编译contacts.proto文件,生成C文件3.3、步骤3:序列化…

Java实现加密(七)国密SM2算法的签名和验签(附商用密码检测相关国家标准/国密标准下载)

目录 一、国密标准中,关于SM2签名验签的定义二、SM2签名和验签的实现原理1. 前置知识2. 签名生成过程3. 验签过程4. 数学正确性证明5. 安全性与注意事项 三、带userId、不带userId的区别1. 核心区别2.算法区别(1) 哈希计算过程(2) 签名验签流程 四、Java代码实现1. …

【华为HCIP | 华为数通工程师】821—多选解析—第十七页

多选835、IS-IS协议所使用的NSAP地址主要由哪几个部分构成? A、AREA ID B、SEL C、DSCp D、SYSTEM ID 解析:NSAP地址:网络服务访问点(Network Service Access Point)是 OSI 协议中用于定位资源的地址。NSAP 的地址结构如图所示,它由 IDP(Initial Domain …

函数的定义与使用(python)

lst[:]是传入lst的拷贝。改变它对原始lst没有任何影响。 *list一个*的元素在函数体内会被当成一个元组。 以下是对图中 Python 代码的详细解释: 代码总体功能 这段代码定义了一个生成器函数 getItem ,用于依次返回多个列表中的元素。然后通过循环遍历…

List findIntersection getUnion

List findIntersection & getUnion 求两个列表的交集和并集 package zwf;import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List;/*** 列表工具类* * author ZengWenFeng* date 2025.04.22* mobile 13805029595* email 117791303qq.com*/ p…

乒乓操作(Ping-Pong)

乒乓操作 “ 乒乓操作” 是一个常常应用于数据流控制的设计思想, 典型的乒乓操作方法如下图 所示: ​ T1周期,输入数据流1缓存到数据缓冲模块1中,如上图棕色;T2周期,输入数据流2缓存到数据缓冲模块2中&…

微信小程序文章管理系统开发实现

概述 在内容为王的互联网时代,高效的文章管理系统成为各类平台的刚需。幽络源平台今日分享一款基于SSM框架开发的微信小程序文章管理系统完整解决方案,该系统实现了多角色内容管理、智能分类、互动交流等功能。 主要内容 一、用户端功能模块 ​​多角…

GrassRouter 小草MULE多5G多链路聚合通信路由设备在应急场景的聚合效率测试报告及解决方案

在应急通信场景中,快速、稳定、高效的通信链路是保障救援工作顺利开展的关键。MULE(Multi-Link Unified Link Enhancement)多链路聚合路由通信设备作为一种新型的通信技术解决方案,通过聚合多条通信链路(如4G/5G、卫星…

【MySQL】MySQL索引与事务

目录 前言 1. 索引 (index) 1.1 概念 1.2 作用 1.3 使用场景 1.4 索引的相关操作 查看索引 创建索引 删除索引 2. 索引背后的数据结构 2.1 B树 2.2 B+树的特点 2.3 B+树的优势 3. 事务 3.1 为什么使用事务 3.2 事…