Qt学习之路(40): QTreeWidget

牙牙将心的qt学习之路,02课,列表、表格、树形控件 小尾羊的qt学习之路,2科,02 Qt 12 : QListWidget Class (列表控件) Qt 13 : QTableWidget Class(表格控件) Qt 14-15 : QTreeWidget Class(树形控件) 阅读详情
前段时间笔记本坏掉了,一直没有更新博客,现在终于修好了啊,还是来继续《Qt学习之路》这个系列吧!
 
接着前面的内容,今天要说的是另外一个item view class,QTreeWidget。顾名思义,这个类用来展示树型结构。同前面说的QListWidget类似,这个类需要同另外一个辅助类QTreeWidgetItem一同使用。不过,既然是提供方面的封装类,即便是看上去很复杂的树,在使用这个类的时候也是显得比较简单的。当不需要使用复杂的QTreeView的特性的时候,我们可以直接使用QTreeWidget代替。
 
下面来看代码。
 
treewidget.h
#ifndef TREEWIDGET_H 
#define TREEWIDGET_H 
 
#include <QtGui> 
 
class TreeWidget :  public QWidget 
{ 
public: 
        TreeWidget(); 
 
private: 
        QTreeWidget *tree; 
}; 
 
#endif  // TREEWIDGET_H
 
treewidget.cpp
#include  "treewidget.h" 
 
TreeWidget::TreeWidget() 
{ 
        tree =  new QTreeWidget( this); 
        tree->setColumnCount(1); 
        QTreeWidgetItem *root =  new QTreeWidgetItem(tree, QStringList(QString( "Root"))); 
        QTreeWidgetItem *leaf =  new QTreeWidgetItem(root, QStringList(QString( "Leaf 1"))); 
        root->addChild(leaf); 
        QTreeWidgetItem *leaf2 =  new QTreeWidgetItem(root, QStringList(QString( "Leaf 1"))); 
        leaf2->setCheckState(0, Qt::Checked); 
        root->addChild(leaf2); 
        QList<QTreeWidgetItem *> rootList; 
        rootList << root; 
        tree->insertTopLevelItems(0, rootList); 
} 
 
首先,我们在构造函数里面创建了一个QTreeWidget的实例。然后我们调用setColumnCount()函数设定栏数。这个函数的效果我们以后再看。然后我们要向QTreeWidget添加QTreeWidgetItem。QTreeWidgetItem有九个重载的构造函数。我们在这里只是来看看其中的一个,其余的请自行查阅API文档。这个构造函数的签名如下:
 
QTreeWidgetItem::QTreeWidgetItem ( QTreeWidget * parent,  const QStringList & strings,  int type = Type );
 
这里有3个参数,第一个参数用于指定这个item属于哪一个树;第二个参数是指定这个item显示的文字;第三个参数用于指定这个item的类型。Type有两个可行的取值:QTreeWidgetItem::Type和QTreeWidgetItem::UserType,由于我们并没有定义用户类型,所以只使用其默认值即可。这里你会奇怪,第二个参数为什么是一个QStringList类型的,而不是QString类型的?我们先不去管它,继续下面的代码。
 
后面我们又创建了一个QTreeWidgetItem,注意它的第一个参数不是QTreeWidget而是QTreeWidgetItem类型的,这就把它的父节点设置为前面我们定义的root了。然后我们使用了setCheckState()函数,让它变得可以选择,最后使用addChild()函数把它添加进来。
 
最后一步,我们创建了一个QList类型,前面的root添加进去,然后insert到top items。这里可以想象到,由于这个树组件可以由多个根组成(严格来说这已经不是树了,不过姑且还是叫树吧),所以我们传进来的是一个list。
 
好了,编译运行一下我们的代码吧!
 
 
样子同我们想象的基本一致,只是这个树的头上怎么会有一个1?还记得我们跳过去的那个函数吗?下面我们修改一下代码看看:
 
#include  "listwidget.h" 
 
TreeWidget::TreeWidget() 
{ 
        tree =  new QTreeWidget( this); 
        tree->setColumnCount(2); 
        QStringList headers; 
        headers <<  "Name" <<  "Number"; 
        tree->setHeaderLabels(headers); 
        QStringList rootTextList; 
        rootTextList <<  "Root" <<  "0"; 
        QTreeWidgetItem *root =  new QTreeWidgetItem(tree, rootTextList); 
        QStringList leafTextList; 
        leafTextList <<  "Leaf 1" <<  "1"; 
        QTreeWidgetItem *leaf =  new QTreeWidgetItem(root, leafTextList); 
        root->addChild(leaf); 
        QStringList leaf2TextList; 
        leaf2TextList <<  "Leaf 2" <<  "2"; 
        QTreeWidgetItem *leaf2 =  new QTreeWidgetItem(root, leaf2TextList); 
        leaf2->setCheckState(0, Qt::Checked); 
        root->addChild(leaf2); 
        QList<QTreeWidgetItem *> rootList; 
        rootList << root; 
        tree->insertTopLevelItems(0, rootList); 
}
 
我们把columnCount设为2,然后传入的QStringList对应的有2个元素。这样再来运行一下:
 
 
原来这个columnCount就是用于在列表中显示树的!这样,你就可以很容易的将树和列表结合在一起,从而实现类似Windows资源管理器的界面。当然,如果你不需要显示这个header,可以调用setHeaderHidden()函数将这个功能隐藏掉。

本文出自 “豆子空间” 博客,请务必保留此出处http://devbean.blog.51cto.com/448512/262296

Qt树形表格控件QTreeWidget的使用:添加自定义列表项 Qt使用QTreeWidget控件,添加自定义列表项! 阅读详情

相关推荐

【Qt笔记】QTreeWidget控件详解

QTreeWidget 是 Qt 框架中用于展示层次化数据的一个非常强大的控件,它继承自 QAbstractItemView 和 QTreeView,但提供了更为简便的接口来管理树形结构的数据。

qq_52924376的博客 1万+

【Qt】Qt多元素控件深入解析与实战应用:列表(QListWidget)、表格(QTableWidget)与树形(QTreeWidget)结构

在Qt框架中,用户界面的构建是一个至关重要的环节,而其中多元素控件的使用更是构建丰富用户界面的核心。本文将深入探讨Qt中的三种主要多元素控件:List Widget、Table Widget和Tree Widget。通过详细的代码示例和功能解析,本文旨在帮助开发者更好地理解和运用这些控件,以创建具有交互性和功能性的应用程序界面。无论是初学者还是有经验的开发者,都能从本文中获得有价值的信息和启发。

Colorful___的博客 2330

使用QTreeWidget 模仿Qt Designer属性编辑器

简介 QTreeWidget类提供了一个使用预定义树模型的视图,提供了一个标准的树小部件,带有一个经典的基于item的接口。这个类基于Qt的模型/视图体系结构,使用默认模型来保存项目,每个项目都是一个QTreeWidgetItem, 使得将数据的存储与其表示分离开来。 运行效果 常用Api 设置表头,为每一列设置标签。 void setHeaderLabels(const QStringList &labels) 单列可用下面的函数 void setHeaderLabel(const QStri

weixin_44901043的博客 3150

qtreewidget读取MySQL_Qt学习之路(40): QTreeWidget

前段时间笔记本坏掉了,一直没有更新博客,现在终于修好了啊,还是来继续《Qt学习之路》这个系列吧!接着前面的内容,今天要说的是另外一个item view class,QTreeWidget。顾名思义,这个类用来展示树型结构。同前面说的QListWidget类似,这个类需要同另外一个辅助类QTreeWidgetItem一同使用。不过,既然是提供方面的封装类,即便是看上去很复杂的树,在使用这个类的时候也...

weixin_39774905的博客 309

Qt入门教程:高级控件篇 - QTreeWidget树形小部件

在本文中,我们介绍了如何使用QTreeWidget创建树形结构并添加父项和子项。我们还展示了如何使用信号与槽机制实现一些常用功能。希望这篇文章能够帮助您更好地了解QTreeWidget控件。

. 699

MPU6050 加速度计和陀螺仪传感器与 Arduino 的接口

虽然该模型并不能准确代表现实世界中加速度计传感器的构建方式,但它通常有助于理解为什么加速度计的输出信号通常以 ±g 为单位指定,或者为什么加速度计在静止时在 z 轴上的读数为 1g,或者在不同方向上您可以期望得到什么样的加速度计读数。该模块的核心是低功耗、低成本的 6 轴运动跟踪芯片 MPU6050,它将 3 轴陀螺仪、3 轴加速度计和数字运动处理器 (DMP) 集成到一个 4mm x 4mm 的微型芯片中。小时候,科学博览会上的陀螺仪总是让我们感到惊讶,因为它们以奇怪的方式移动,甚至似乎违背了重力。

sxstj的博客 9932

Qt 图表UI QTreeWidget

Qt 图表UI QTreeWidgetQTreeWidget和QTreeView区别,应该使用哪一个QTreeWidget常用样式表QTreeWidget常用属性QTreeWidget 设置表格可以编辑/选中/不可编辑等等 QTreeWidget和QTreeView区别,应该使用哪一个   Qt界面中需要使用图表的时候,默认提供两个widget QTreeWidget和QTreeView。...

Beyond欣 4700

手把手教你用scATAC-seq分析拟南芥根尖染色质可及性(附代码实战)

本文详细介绍了使用scATAC-seq技术分析拟南芥根尖染色质可及性的完整流程,涵盖从实验设计、数据质控、细胞分群到差异分析和多组学整合的实战步骤。通过具体的代码示例,帮助植物研究者掌握单细胞表观组学分析的核心方法,揭示细胞异质性和基因调控动态。

weixin_29291185的博客 265

QTreeWidget小记

QSS: treeWidget->setStyleSheet(QString("QTreeView{background-color:%1;selection-background-color:#%3;selection-color: #%6;}" "QTreeView::item{color:#000000;height:40px;}"

友善啊,朋友的博客 789

避坑指南:C# OpenCvSharp调用4K摄像头常见的5个问题及解决方案

本文针对C# OpenCvSharp调用4K高清摄像头时常见的五大难题,提供了详细的解决方案。内容涵盖分辨率设置失效、帧率卡顿、内存泄漏、硬件驱动兼容性以及性能优化实战,帮助开发者高效稳定地处理4K视频流,提升智能安防监控等项目的开发效率。

weixin_29268331的博客 424

[ensp报错:USG6000V错误代码45解决方案]

[ensp报错:USG6000V:错误代码45解决] [ensp报错:USG6000V:错误代码45解决] 第一种处理方式: ensp的45错误帮助文档里的解决方法:(这里就不说了,上华为爸爸的图) ensp的45错误:如果你的45错误不是描述的那个,可能是ensp与virtualbox不兼容了。 错误描述:具体表现为在virtualbox里没有vfw_usg的条目,虚拟介质管理器里也没有相应的条目: 就是vfw_usg_vdi这个 这种情况下你把ensp卸载重装多少次都没用,原因在两个软件的兼容

weixin_45456536的博客 3万+

在QTreeWidget中删除QTreeWidgetItem

我就想删除topLevelItem  stackoverflow上是这样说的: http://stackoverflow.com/questions/9392051/how-do-i-delete-a-top-level-qtreewidgetitem-from-a-qtreewidget http://stackoverflow.com/questions/9986231/getting-a...

weixin_33963594的博客 3076

准静态电磁场

叠加法 缺点:对于连续分布的电荷,叠加法的计算比较困难 虚位移法 概念 广义坐标:确实系统中导体形状、尺寸与位置的一组独立几何量。 广义力:企图改变某一广义坐标的力。 功:广义力乘上由它引起的广义坐标的改变量。 公式 ...

qq_35912930的博客 1860

Qt模型视图框架实战:QTreeWidget高效构建树形数据界面

本文详细介绍了Qt模型视图框架中的QTreeWidget控件,通过实战案例展示如何高效构建树形数据界面。从基础创建、核心功能实现到性能优化,全面解析QTreeWidget在文件浏览器、数据库展示等场景的应用技巧,帮助开发者快速掌握这一强大工具。

app77的博客 178

跨境电商产品信息抓取:使用Python爬虫进行市场分析

跨境电商平台是指为不同国家和地区的买卖双方提供在线交易服务的电子商务平台。亚马逊(Amazon):全球最大的电商平台之一,提供丰富的商品种类和全球配送服务。eBay:全球知名的在线拍卖和购物网站,支持个人和企业卖家。速卖通(AliExpress):阿里巴巴旗下的跨境电商平台,主要面向全球消费者提供中国制造的商品。Wish:以移动端为主的跨境电商平台,主打低价商品和个性化推荐。这些平台上的商品数据包括商品名称、价格、销量、用户评价、库存等信息,对于市场分析具有重要价值。

2201_76125261的博客 1233

MySQL 高可用与集群技术深度解析

高可用性(High Availability,HA)是指系统在较长时间内持续提供服务的能力,通常以系统正常运行时间占总时间的百分比(如 “99.99% 可用性”)来衡量。对于数据库系统而言,高可用性目标是通过冗余设计、故障自动检测与恢复、负载均衡等技术手段,最大限度地减少因硬件故障、软件错误、网络问题等导致的服务中断,确保数据的高可靠性和业务的连续性。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1502
上一篇: Qt学习之路(39): QListWidget
下一篇: Qt学习之路(41): QTableWidget
flowingFire2012
博客等级 码龄14年 6粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值