【QT】QTreeWidget控件的使用

目录

1.概述

2.QTreeWidget控件功能接口

2.1 构造函数

2.2 添加和访问顶级条目

2.3 条目访问函数

2.4 当前条目的操作

2.5 条目查找和排序

2.6 条目显示和运行时条目编辑

2.7 信号

2.8 槽函数

2.9 基类 QTreeView 的函数

2.10 树头条目

2.11选中行为和选中模式

3.QTreeWidget控件功能实例介绍

3.1 本实例的目录树节点操作规则

3.2目录树初始化添加顶层节点

3.3添加目录节点

3.4 添加图片文件节点

3.5 当前节点变化后的响应

3.6 删除节点

3.7 节点的遍历

1.概述

   QTreeWidget类是创建和管理目录结构的类,它继承自QTreeView,可以显示多列数据和树形结构的层次关系,还提供了许多交互功能。可以支持单选、多选和可编辑的节点,还可以自定义节点的样式和布局。除此之外,QTreeWidget 还支持信号和槽机制,可以方便地处理节点的操作事件,如点击、双击、选择等等。

2.QTreeWidget控件功能接口

2.1 构造函数

QTreeWidget(QWidget * parent = 0)
参数里只有指定父窗口或父控件的指针 parent 。树形控件在添加条目之前,必须要先设置列数:
void setColumnCount(int columns) //设置列数
int columnCount() const //获取列数

2.2 添加和访问顶级条目

树形控件顶级条目的操作比较类似 QListWidget 的列表条目操作函数。新建条目之后,可以用如下函数把条目添加到树形控件的顶级条目列表末尾:
void QTreeWidget::addTopLevelItem(QTreeWidgetItem * item) //添加一个顶级条目到末尾
void QTreeWidget::addTopLevelItems(const QList<QTreeWidgetItem *> & items) //添加多个顶级条目到末尾
如果希望将条目插入到指定顶级条目列表的 index 序号位置,使用如下函数:
void QTreeWidget::insertTopLevelItem(int index, QTreeWidgetItem * item)
void QTreeWidget::insertTopLevelItems(int index, const QList<QTreeWidgetItem *> & items)
树形控件所有的顶级条目父节点指针都为 NULL (父节点是指树形层次中的节点关系,而条目的父控件依然是树形控件本身)。
添加了顶级条目之后,可以对顶级条目进行计数:
int QTreeWidget::topLevelItemCount() const

2.3 条目访问函数

对于顶级条目,如果知道顶级条目的序号获取对应的条目:
QTreeWidgetItem * QTreeWidget::topLevelItem(int index) const
反过来,对于已知顶级条目对象,查看其顶级序号:如果条目不是顶级条目或者条目不属于该控件,那么会返回 -1。
int QTreeWidget::indexOfTopLevelItem(QTreeWidgetItem * item) const
树形控件实际运行时,可能既有顶级条目,也有展开后的子孙条目同时显示,所以某个条目上面或下面的相邻条目不一定是同级别的兄弟条目,有可能是叔辈祖 辈的条目,也 可能是子辈孙辈条目。获取某个条目的相邻条目函数为:
QTreeWidgetItem * QTreeWidget::itemAbove(const QTreeWidgetItem * item) const //上面相邻条目
QTreeWidgetItem * QTreeWidget::itemBelow(const QTreeWidgetItem * item) const //下面相邻条目
从屏幕控件显示角度,如果根据树形控件 内部相对坐标 获取条目(树形控件显示区域的左上角为原点),使用下面函数:
QTreeWidgetItem * QTreeWidget::itemAt(const QPoint & p) const//用 QPoint 对象表示相对坐标
QTreeWidgetItem * QTreeWidget::itemAt(int x, int y) const//直接用 x 和 y 数值表示坐标
//如果对应坐标没有条目,会返回 NULL,注意判断 返回值。
树形控件也是自带滚动条的,如果条目特别多,自动显示滚动条,对于树形控件在屏幕可见的条目,可以根据条目对象获取它的 可视矩形 (树形控件显示区域的 左上角为原 点):
QRect QTreeWidget::visualItemRect(const QTreeWidgetItem * item) const

2.4 当前条目的操作

树形控件的选中操作默认比较像 QListWidget,如果不手动设置,只能选中一个高亮条目。
获取当前高亮选中条目的函数为:
QTreeWidgetItem * QTreeWidget::currentItem() const
树形控件可以有多列,当前条目被点击选中的列号为:
int QTreeWidget::currentColumn() const
树形控件内的条目一般都没有固定行号, 因为条目可以展开也可以折叠,行号是变化的,所以没有基于行号的操作函数。
如果要设置某个条目为当前选中的状态:
void QTreeWidget::setCurrentItem(QTreeWidgetItem * item)//设置该条目整行高亮选中
void QTreeWidget::setCurrentItem(QTreeWidgetItem * item, int column)//设置该条目行的 column 列高亮选中
void QTreeWidget::setCurrentItem(QTreeWidgetItem * item, int column, QItemSelectionModel::SelectionFlags command)//单次选中命令
如果当前高亮选中的状态发生变化,会触发如下信号:
//注意指针可能是 NULL,使用指针前一定要判断指针非空。
void QTreeWidget::currentItemChanged(QTreeWidgetItem * current, QTreeWidgetItem * previous)//参数里分别是当前高亮选中的条目,和之前高亮选中的条目

2.5 条目查找和排序

如果要根据模板子串查找某列文本匹配的条目,使用如下函数:
//该函数只查找一列的文本,其他列的文本是不查找的。如果需要查找所有列数据,那么要根据不同列号逐列查询。
QList<QTreeWidgetItem *> QTreeWidget::findItems(const QString & text, Qt::MatchFlags flags, int column = 0) const //参数里text是模板子串,flags是匹配标志,第三个参数是指定查找的列。
类似表格控件,树形控件也可以按照列的文本进行自动排序,自动排序的设置函数为:
bool    isSortingEnabled() const          //设置是否自动排序
  • 61
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝女子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值