【Qt】控件——Qt多元素控件、常见的多元素控件、多元素控件的使用、List Widget、Table Widget、Tree Widget
文章目录
- Qt
- Qt多元素控件
- List Widget
- Table Widget
- Tree Widget
Qt

Qt多元素控件
List Widget
使用 QListWidget 能够显示一个纵向的列表。
| 属性 | 说明 |
|---|---|
| currentRow | 当前被选中的是第几行。 |
| count | 一共有多少行。 |
| sortingEnabled | 是否允许排序。 |
| isWrapping | 是否允许换行。 |
| itemAlignment | 元素的对齐方式。 |
| selectRectVisible | 被选中的元素矩形是否可见。 |
| spacing | 元素之间的间隔。 |
| 方法 | 说明 |
|---|---|
| addItem(const QString& label)、addItem(QListWidgetItem *item) | 列表中添加元素。 |
| currentItem() | 返回 QListWidgetItem*,表示当前选中的元素。 |
| setCurrentItem(QListWidgetItem* item) | 设置选中哪个元素。 |
| setCurrentRow(int row) | 设置选中第几行的元素。 |
| insertItem(const QString& label, int row)、insertItem(QListWidgetItem *item, int row) | 在指定的位置插入元素。 |
| item(int row) | 返回 QListWidgetItem*,表示第 row 行的元素。 |
| takeItem(int row) | 删除指定行的元素,返回 QListWidgetItem*,表示是哪个元素被删除了。 |
| 信号 | 说明 |
|---|---|
| currentItemChanged(QListWidgetItem* current, QListWidgetItem* old) | 选中不同元素时会触发。参数是当前选中的元素和之前选中的元素。 |
| currentRowChanged(int) | 选中不同元素时会触发。参数是当前选中元素的行数。 |
| itemClicked(QListWidgetItem* item) | 点击某个元素时触发。 |
| itemDoubleClicked(QListWidgetItem* item) | 双击某个元素时触发。 |
| itemEntered(QListWidgetItem* item) | 鼠标进入元素时触发。 |
在上述介绍中,涉及到一个关键的类 ——QListWidgetItem。这个类表示 QListWidget 中的一个元素。其核心方法本质上是由 “文本 + 图标” 构成的。
| 方法 | 说明 |
|---|---|
| setFont | 设置字体。 |
| setIcon | 设置图标。 |
| setHidden | 设置隐藏。 |
| setSizeHint | 设置尺寸。 |
| setSelected | 设置是否选中。 |
| setText | 设置文本。 |
| setTextAlignment | 设置文本对齐方式。 |
- 代码示例:创建一个 QListWidget,并且我们可以在里面进行添加元素和删除元素的操作。

- 连接槽函数,addItem()的作用就是向 QListWidget 控件中添加 QListWidgteItem 元素;takeItem 作用是删除控件中的元素。

Table Widget
Table Widget 使用 QTableWidget 表示一个表格控件。一个表格中包含若干行,每一行又包含若干列。表格中的每个单元格,是一个 QTableWidgetItem 对象。
| 方法 | 说明 |
|---|---|
| item(int row, int column) | 根据行数和列数获取指定的 QTableWidgetItem*。 |
| setItem(int row, int column, QTableWidget*) | 根据行数和列数设置表格中的元素。 |
| currentItem() | 返回被选中的元素 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 列。 |
| setHorizontalHeaderItem(int column, QTableWidget*) | 设置指定列的表头。 |
| setVerticalHeaderItem(int row, QTableWidget*) | 设置指定行的表头。 |
QTableWidgetItem 核心方法:
| 方法 | 说明 |
|---|---|
| row() | 获取当前是第几行。 |
| column() | 获取当前是第几列。 |
| setText(const QString&) | 设置文本。 |
| setTextAlignment(int) | 设置文本对齐。 |
| setIcon(const QIcon&) | 设置图标。 |
| setSelected(bool) | 设置被选中。 |
| setSizeHints(const QSize&) | 设置尺寸。 |
| setFont(const QFont&) | 设置字体。 |
| 信号 | 说明 |
|---|---|
| cellClicked(int row, int column) | 点击单元格时触发。 |
| cellDoubleClicked(int row, int column) | 双击单元格时触发。 |
| cellEntered(int row, int column) | 鼠标进入单元格时触发。 |
| currentCellChanged(int row, int column, int previousRow, int previousColumn) | 选中不同单元格时触发。 |
- 创建表格控件QTableWidget。

- 使用setItem向表格控件中添加元素。

Tree Widget
Tree Widget 使用 QTreeWidget 表示一个树形控件。里面的每个元素都是一个 QTreeWidgetItem,每个 QTreeWidgetItem 可以包含多个文本和图标,每个文本 / 图标为一个列。
可以给 QTreeWidget 设置顶层节点(顶层节点可以有多个),然后再给顶层节点添加子节点,从而构成树形结构。这种结构非常适合展示具有层次关系的数据,比如文件系统目录结构、组织结构图等。
| 方法 | 说明 |
|---|---|
| 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 名称。 |
| 信号 | 说明 |
|---|---|
| currentItemChanged (QTreeWidgetItem* current, QTreeWidgetItem* old) | 切换选中元素时触发 |
| itemClicked (QTreeWidgetItem* item, int col) | 点击元素时触发 |
| itemDoubleClicked (QTreeWidgetItem* item, int col) | 双击元素时触发 |
| itemEntered (QTreeWidgetItem* item, int col) | 鼠标标进⼊时触发 |
| itemExpanded (QTreeWidgetItem* item) | 元素被展开时触发 |
| itemCollapsend (QTreeWidgetItem* 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 () | 获取该元素的父节点 |
-
创建QTreeWidget树形控件。

-
添加树形控件的层级元素。

相关文章:
【Qt】控件——Qt多元素控件、常见的多元素控件、多元素控件的使用、List Widget、Table Widget、Tree Widget
文章目录 QtQt多元素控件List WidgetTable WidgetTree Widget Qt Qt多元素控件 List Widget 使用 QListWidget 能够显示一个纵向的列表。 属性说明currentRow当前被选中的是第几行。count一共有多少行。sortingEnabled是否允许排序。isWrapping是否允许换行。itemAlignment元素…...
【图论】(五)最短路径算法(D / BF / SPFA / F / A*)
最短路径算法(D / BF / SPFA / F / A*) 1. 最短路径之dijkstra(D算法)思路模拟过程程序实现拓展 2. dijkstra算法堆优化思路程序实现 3. Bellman_ford 算法(BF算法)松弛模拟过程拓展 4. Bellman_ford 队列优…...
Scala中的reduce
作用:reduce是一种集合操作,用于对集合中的元素进行聚合操作,返回一个单一的结果。它通过指定的二元操作(即取两个元素进行操作)对集合中所有的元素进行递归处理,并最终将其合并为一个值。 语法࿱…...
调查显示软件供应链攻击增加
OpenText 发布了《2024 年全球勒索软件调查》,强调了网络攻击的重要趋势,特别是在软件供应链中,以及生成式人工智能在网络钓鱼诈骗中的使用日益增多。 尽管各国政府努力加强网络安全措施,但调查显示,仍有相当一部分企…...
JMeter使用不同方式传递接口参数
1、使用 HTTP 请求中的参数: 在 JMeter 的测试计划中,添加一个 "HTTP 请求" 元件。 在 "HTTP 请求" 元件的参数化选项中,可以添加参数的名称和值。可以手动输入参数,也可以使用变量来传递参数值。 如果要使…...
《C++开发 AR 游戏:开启未来娱乐新潮流》
一、引言 在当今科技飞速发展的时代,增强现实(AR)技术正以惊人的速度改变着我们的生活和娱乐方式。从智能手机上的 AR 滤镜到沉浸式的 AR 游戏,这项技术的应用越来越广泛。而在众多编程语言中,C以其高效、强大的性能在…...
列表、元组、集合、字典和 pandas 数据框(DataFrame)之间的数据转换
二、列表、元组、集合、字典和 pandas 数据框(DataFrame)之间的数据转换 在 Python 中,列表、元组、集合、字典和 pandas 数据框(DataFrame)是常见的数据结构,它们可以通过多种方式相互转换。每种数据结构…...
美图设计室
美图设计室 体验地址:美图设计室 一、产品描述 美图设计室是美图公司推出的一款集图形设计、广告制作、海报制作等功能于一体的智能设计软件。它凭借其独特的界面设计、强大的工具功能、智能化辅助设计以及丰富的社区互动功能,为用户提供了一个便捷、高…...
张雪峰:如果你现在是计算机专业,一定要优先报网络安全,它是未来国家发展的大方向
🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 “计算机专业 一定要优先报 网络安全 它是未来国家发展的大方向” 为什么推荐学网络安全? “没有网络安全就没有国家安全。”当前ÿ…...
Golang | Leetcode Golang题解之第486题预测赢家
题目: 题解: func PredictTheWinner(nums []int) bool {return total(nums, 0, len(nums) - 1, 1) > 0 }func total(nums []int, start, end int, turn int) int {if start end {return nums[start] * turn}scoreStart : nums[start] * turn total…...
【Golang】Go语言中如何创建Cron定时任务
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
Android compose 重建流程1
前言 本文是笔者学习Compose是如何自动触发UI刷新的笔记,可能缺乏一定可读性和教导性.(建议阅读参考文献更具启发性) 使用以下BOM作为研究环境. composeBom "2024.04.01" androidx-compose-bom { group "androidx.compose", name "compose-bom…...
C++:模板(2)
目录 非类型模板参数 模板的特化 概念 函数模板特化 类模板特化 全特化 偏特化 模板的分离编译 分离编译的概念 模板的分离编译 编辑 模板总结 非类型模板参数 模板参数分为类型形参与非类型形参。 类型形参:在模板参数列表中,跟在class…...
Golang 并发编程:Context 包的使用与并发控制
文章目录 一、简介二、Context 的基本概念1. context 包常用函数 三、Context 的基本用法1. WithCancel:取消任务的上下文 四、超时控制:WithTimeout 和 WithDeadline1. 使用 WithTimeout 控制任务超时2. 使用 WithDeadline 设定截止时间 五、传递上下文…...
QGraphics类型学习使用【Qt】【C++】
QGraphics类型学习使用 需求过程全部完整代码 首先已知,QGraphicsView,QGraphicsScene, QGraphicsItem,分别称为:视图,场景,图元,图表就是各种各样的元素,图片元素,线条元…...
迁移学习和在线学习小结
迁移学习 英文小名: transform learning 简介: 把已经训练好的模型A为基本, 在新场景中, 根据新数据建立模型B 目的: 将某个领域或任务上学习到的知识/模式, 应用到不同但相关的领域/问题中 方法: 1.结构引用 适用情况: 新数据多, 场景相似度高, 可以基于原模型重新训练 2.特征…...
克里金插值(Kriging interpolation)
原理可参考该文件:克里金(Kriging)插值的原理与公式推导 - xg1990 matlab code可参考:Ordinary Kriging - File Exchange - MATLAB Central Some notes: 采用普通克里金时,采样的密度对结果影响非常大。若采样密度不够,误差会非…...
sealed class-kotlin中的封闭类
在 Kotlin 中,sealed class(密封类)是一种特殊的类,用于限制继承的类的数量。密封类可以被用来表示一组有限的类型,通常用于状态管理或表达多种可能的错误类型。 密封类用 sealed 关键字定义,这意味着只能…...
MongoDB Shell 基本命令(一)
MongoDB Shell 基本命令(一) 1. 基本概念 SQL术语/概念MongoDB术语/概念解释/说明databasedb数据库tablecollection数据库表/集合rowdocument数据记录行/文档columnfield数据字段/域indexindex索引table joins表连接,MongoDB不支持primary keyprimary key主键,Mon…...
Flink时间语义和时间窗口
前言 在实际的流计算业务场景中,我们会发现,数据和数据的计算往往都和时间具有相关性。 举几个例子: 直播间右上角通常会显示观看直播的人数,并且这个数字每隔一段时间就会更新一次,比如10秒。电商平台的商品列表&a…...
【超全】基于Springboot多维分类的知识管理系统【包括源码+文档+调试】
💕💕发布人: 码上青云 💕💕各类成品Java毕设 。javaweb,ssm,springboot等项目,欢迎咨询。 💕💕程序开发、技术解答、代码讲解、文档, ἱ…...
突破Windows多显示器显示壁垒:SetDPI重新定义显示体验
突破Windows多显示器显示壁垒:SetDPI重新定义显示体验 【免费下载链接】SetDPI 项目地址: https://gitcode.com/gh_mirrors/se/SetDPI 在当今多设备协同工作的时代,显示器已成为我们与数字世界交互的重要窗口。然而,当程序员小李将笔…...
如何快速下载网易云音乐双语歌词:LrcHelper完整指南
如何快速下载网易云音乐双语歌词:LrcHelper完整指南 【免费下载链接】LrcHelper 从网易云音乐下载带翻译的歌词 Walkman 适配 项目地址: https://gitcode.com/gh_mirrors/lr/LrcHelper LrcHelper是一款专门为网易云音乐用户设计的免费歌词下载工具࿰…...
便携式动物源性成分检测仪 肉类真假检测仪
整机采用极简一体化便携设计,无冗余复杂配件,整套系统由两大核心部分构成,兼顾设备专业性与便携实用性,开箱即可快速开展检测工作,无需额外搭建复杂检测环境,完美适配现场流动检测需求:核心检测…...
电磁学核心概念与解题框架精讲(猴博士风格)
1. 电磁学基础概念拆解:从场强到电势 电场强度E和电势U是电磁学中最基础的两个物理量,就像描述一个人需要身高和体重两个指标一样。很多同学刚开始学电磁学时容易混淆这两个概念,我用一个简单的类比帮大家理解:想象电场强度就像山…...
ChatTTS 安装与部署实战:从零搭建到性能调优
最近在做一个语音合成的项目,选型时看中了 ChatTTS,它开源的特性、不错的音质和可控性很吸引人。但在实际动手安装和部署时,发现从个人电脑跑起来到服务器上稳定服务,中间有不少坑。今天就把我这一路从零搭建到性能调优的实战经验…...
ROS2 MoveIt2实战:如何让虚拟机械臂‘看懂’并抓取YOLOv8 OBB识别的物体?
ROS2 MoveIt2与YOLOv8 OBB深度集成:构建高精度虚拟抓取系统的核心技术解析 当机械臂遇上计算机视觉,一场关于精准控制的交响乐就此展开。本文将带您深入探索如何利用YOLOv8 OBB(Oriented Bounding Box)的朝向感知能力,…...
【架构实战】架构师成长路线图
一、架构师的核心能力 架构师不是只会画图的技术人,而是能在技术、业务、团队之间找到平衡点的综合型人才。 技术深度 精通至少一个技术领域理解底层原理,不浮于表面持续跟踪新技术趋势 系统思维 全局视角看问题懂得权衡(Trade-off࿰…...
新手零门槛入门:用快马生成你的第一个jiyutrainer式Python练习脚本
作为一个刚接触Python的新手,想要练习编程却常常被各种环境配置和工具安装搞得晕头转向。最近我发现了一个特别适合新手入门的方法——使用InsCode(快马)平台来生成自己的第一个Python练习脚本。下面我就来分享一下这个零门槛的入门体验。 为什么选择jiyutrainer式练…...
如何快速上手TradingView图表库:15+框架完整集成实战指南
如何快速上手TradingView图表库:15框架完整集成实战指南 【免费下载链接】charting-library-examples Examples of Charting Library integrations with other libraries, frameworks and data transports 项目地址: https://gitcode.com/gh_mirrors/ch/charting-…...
