Qt|QTreewidget类下函数qt助手详解说明示例(上)

该系列持续更新,喜欢请一键三连,感谢各位大佬。
QT5.14.2 参考官方QT助手

文章目录

  • QTreeWidget Class
  • properties
  • Public Functions
    • 默认构造函数
    • 默认析构函数
    • 添加根节点void addTopLevelItem(QTreeWidgetItem *item)
    • 添加多个根节点void addTopLevelItems(const QList<QTreeWidgetItem *> &items)
    • 关闭编辑void closePersistentEditor(QTreeWidgetItem *item, int column = 0)
    • 获取列数int columnCount() const
    • 返回当前选中列int currentColumn() const
    • 返回当前选中QTreeWidgetItem *currentItem() const
    • 没用void editItem(QTreeWidgetItem *item, int column = 0)
    • 查找满足条件的item返回QList<QTreeWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags, int column = 0) const
    • 返回表头QTreeWidgetItem *headerItem() const
    • 返回index索引根据item int indexOfTopLevelItem(QTreeWidgetItem *item) const
    • 在指定索引位置插入新的top节点void insertTopLevelItem(int index, QTreeWidgetItem *item)
    • 插入多个top节点void insertTopLevelItems(int index, const QList<QTreeWidgetItem *> &items)
    • 递归访问所有根节点 返回一个模拟节点作为所有根节点的父节点QTreeWidgetItem *invisibleRootItem() const
    • 节点是否为可编辑状态bool isPersistentEditorOpen(QTreeWidgetItem *item, int column = 0) const
    • 不分层级获取上层相邻节点QTreeWidgetItem *itemAbove(const QTreeWidgetItem *item) const
    • 根据坐标返回节点QTreeWidgetItem *itemAt(const QPoint &p) const
    • 同上直接输入坐标QTreeWidgetItem *itemAt(int x, int y) const
    • 返回显示出的下层节点QTreeWidgetItem *itemBelow(const QTreeWidgetItem *item) const

在这里插入图片描述

QTreeWidget Class

The QTreeWidget class provides a tree view that uses a predefined tree model. More…
QTreeWidget类提供了一个使用预定义树模型的树视图。

Header:#include
qmake:QT += widgets
Inherits:QTreeView

List of all members, including inherited members
所有成员的列表,包括继承的成员
Obsolete members
过时的成员

properties

columnCount : int
topLevelItemCount : const int

Public Functions

默认构造函数

QTreeWidget::QTreeWidget(QWidget *parent = nullptr)
在这里插入图片描述
示例:

// 创建 QTreeWidget 对象
QTreeWidget *tree = new QTreeWidget;
tree->setColumnCount(3);                            // 设置列数为 3
tree->setHeaderLabels({ "Name", "Value", "Data" });   // 设置列标签
tree->header()->setSectionResizeMode(QHeaderView::ResizeToContents); // 自适应列宽

默认析构函数

QTreeWidget::~QTreeWidget()
在这里插入图片描述

添加根节点void addTopLevelItem(QTreeWidgetItem *item)

在这里插入图片描述
示例:

// 创建根节点
QTreeWidgetItem *root = new QTreeWidgetItem(tree);
root->setText(0, "Root");
root->setText(1, "0");
root->setData(2, Qt::UserRole, "root data");
tree->addTopLevelItem(root);

在这里插入图片描述

添加多个根节点void addTopLevelItems(const QList<QTreeWidgetItem *> &items)

在这里插入图片描述
示例:

// 创建根节点
QTreeWidgetItem *root = new QTreeWidgetItem(tree);
root->setText(0, "Root");
root->setText(1, "0");
root->setData(2, Qt::UserRole, "root data");
//tree->addTopLevelItem(root);
QList<QTreeWidgetItem* > all_root_list;
all_root_list.push_back(root);
QTreeWidgetItem *root1 = new QTreeWidgetItem(tree);
root1->setText(0, "Root2");
all_root_list.push_back(root1);
tree->addTopLevelItems(all_root_list);

在这里插入图片描述

关闭编辑void closePersistentEditor(QTreeWidgetItem *item, int column = 0)

在这里插入图片描述
关闭item编辑器,如果是关闭的则此函数无效。
先打开看效果是这样的:

tree->openPersistentEditor(root);

在这里插入图片描述
然后再调用closePersistentEditor

tree->openPersistentEditor(root);
tree->closePersistentEditor(root);

在这里插入图片描述

获取列数int columnCount() const

在这里插入图片描述

qDebug() << "tree->columnCount:"<<tree->columnCount();

在这里插入图片描述

返回当前选中列int currentColumn() const

在这里插入图片描述
默认-1,点击选中哪列返回列号,索引从0开始。

qDebug() << "tree->currentColumn:" << tree->currentColumn();
connect(tree, &QTreeWidget::itemClicked, this, [=] {qDebug() << "tree->currentColumn:" << tree->currentColumn();
});

在这里插入图片描述

返回当前选中QTreeWidgetItem *currentItem() const

在这里插入图片描述
默认是NULL

QTreeWidgetItem* selectItem = tree->currentItem();

在这里插入图片描述

没用void editItem(QTreeWidgetItem *item, int column = 0)

在这里插入图片描述

查找满足条件的item返回QList<QTreeWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags, int column = 0) const

在这里插入图片描述
查找包含字符串ro的item,以字符串不分大小写匹配(第二个参数是匹配规则为枚举类型详见qt官方文档说明)

QList<QTreeWidgetItem*> find_items = tree->findItems("ro",Qt::MatchContains);
for (auto item:find_items)
{qDebug() << item->text(0);
}

在这里插入图片描述

返回表头QTreeWidgetItem *headerItem() const

在这里插入图片描述

QTreeWidgetItem* hearderItem = tree->headerItem();
qDebug() << hearderItem->text(0);
qDebug() << hearderItem->text(1);
qDebug() << hearderItem->text(2);
qDebug() << hearderItem->text(3);

在这里插入图片描述

返回index索引根据item int indexOfTopLevelItem(QTreeWidgetItem *item) const

在这里插入图片描述
只能获取到top节点索引

qDebug() << tree->indexOfTopLevelItem(nullptr);
qDebug() << tree->indexOfTopLevelItem(root);
qDebug() << tree->indexOfTopLevelItem(child2);
qDebug() << tree->indexOfTopLevelItem(root1);

在这里插入图片描述

在指定索引位置插入新的top节点void insertTopLevelItem(int index, QTreeWidgetItem *item)

在这里插入图片描述
插入qstring超过列数则不显示

QStringList insertitem;
insertitem << "insertroot" << "i2" << "2133" << "122344";
tree->insertTopLevelItem(1, new QTreeWidgetItem(insertitem));

在这里插入图片描述

插入多个top节点void insertTopLevelItems(int index, const QList<QTreeWidgetItem *> &items)

在这里插入图片描述

QStringList insertitem;
insertitem << "insertroot" << "i2" << "2133";
QList<QTreeWidgetItem*> qtree_widget_list;
qtree_widget_list.push_back(new QTreeWidgetItem(insertitem));
insertitem.clear();
insertitem << "insertroot2";
qtree_widget_list.push_back(new QTreeWidgetItem(insertitem));
tree->insertTopLevelItems(0, qtree_widget_list);

在这里插入图片描述

递归访问所有根节点 返回一个模拟节点作为所有根节点的父节点QTreeWidgetItem *invisibleRootItem() const

在这里插入图片描述
以该形式遍历所有根节点:

QTreeWidgetItem* one = tree->invisibleRootItem();
int nums = one->childCount();
for (int i=0;i<nums;++i)
{qDebug() << one->child(i)->text(0);
}

在这里插入图片描述

节点是否为可编辑状态bool isPersistentEditorOpen(QTreeWidgetItem *item, int column = 0) const

在这里插入图片描述
获取item是否为可编辑状态,qt5.10之后版本才有这个函数

qDebug()<< tree->isPersistentEditorOpen(root);
tree->openPersistentEditor(root);
qDebug() << tree->isPersistentEditorOpen(root);
tree->closePersistentEditor(root);
qDebug() << tree->isPersistentEditorOpen(root);

在这里插入图片描述

不分层级获取上层相邻节点QTreeWidgetItem *itemAbove(const QTreeWidgetItem *item) const

在这里插入图片描述
只能获取到展开节点,所以开始之前先调用expandAll(),否则获取到的为显示的相邻节点。
若没有显示出来的上层节点则返回空指针。

tree->expandAll();
QTreeWidgetItem* t1 = tree->itemAbove(root);
if (t1)qDebug() << t1->text(0);
t1 = tree->itemAbove(child1);
if (t1)qDebug() << t1->text(0);
t1 = tree->itemAbove(root1);
if (t1)qDebug() << t1->text(0);

在这里插入图片描述

根据坐标返回节点QTreeWidgetItem *itemAt(const QPoint &p) const

在这里插入图片描述
树形控件内部坐标,左上角为0,0点,如果对应坐标没有节点返回NULL

QPoint* p1 = new QPoint(0, 0);
QTreeWidgetItem* t1 = tree->itemAt(*p1);
if (t1)qDebug() << t1->text(0);
QPoint* p2 = new QPoint(0, 40);
t1 = tree->itemAt(*p2);
if (t1)qDebug() << t1->text(0);

在这里插入图片描述

同上直接输入坐标QTreeWidgetItem *itemAt(int x, int y) const

在这里插入图片描述
同上:
在这里插入图片描述

返回显示出的下层节点QTreeWidgetItem *itemBelow(const QTreeWidgetItem *item) const

在这里插入图片描述
同itemAbove,只是取得下层节点,没有下层则返回空指针
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

强化学习Agent系列(二)——PyGame虚拟环境创建与Python 贪吃蛇Agent制作实战教学

文章目录 一、前言二、gymnasium 简单虚拟环境创建1、gymnasium介绍2、gymnasium 贪吃蛇简单示例 三、基于gymnasium创建的虚拟环境训练贪吃蛇Agent1、虚拟环境2、虚拟环境注册3、训练程序4、模型测试 三、卷积虚拟环境1、卷积神经网络虚拟环境2、训练代码 一、前言 大家好&am…

C++重点---STL简介

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、STL简介 STL&#xff08;Standard Template Library&#xff09;是C标准库中的一个重要组成部分&#xff0c;它提供了…

Flutter Dio进阶:使用Flutter Dio拦截器实现高效的API请求管理和身份验证刷新

Flutter笔记 使用Flutter Dio拦截器实现高效的API请求管理和身份验证刷新 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article…

js 面试 什么是WebSockets?HTTP和HTTPS有什么不同?web worker是什么?

概念&#xff1a; webSocket 是一种在客户端和服务端之间建立持久连接的协议&#xff0c;它提供全双工通信通道&#xff0c;是服务器可以主动向客户端推送数据&#xff0c;同时也可以接受客户端发送的数据。 1 webSocket与https区别&#xff1f; 在网络通信中&#xff0c;We…

websocket在django中的运用

14-2 聊天室实现思路&#xff1a;轮训、长轮训、websocket_哔哩哔哩_bilibili 参考大佬的B站学习笔记 https://www.cnblogs.com/wupeiqi/p/6558766.html 参考博客 https://www.cnblogs.com/wupeiqi/articles/9593858.html 参考博客 http协议: 是短连接&#xff0c;无状态…

C#,双向链表(Doubly Linked List)归并排序(Merge Sort)算法与源代码

1 双向链表 双向链表也叫双链表&#xff0c;是链表的一种&#xff0c;它的每个数据结点中都有两个指针&#xff0c;分别指向直接后继和直接前驱。所以&#xff0c;从双向链表中的任意一个结点开始&#xff0c;都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循…

vscode 设置打开终端的默认工作目录/路径

vscode 设置打开终端的默认工作目录/路径** 文章目录 vscode 设置打开终端的默认工作目录/路径**打开vscode&#xff0c;打开设置UI 或是设置JSON文件&#xff0c;找到相关设置项方式1&#xff1a;通过打开settings.json的UI界面 设置:方式2&#xff1a;通过打开设置settings.j…

linux系统-----------搭建LNMP 架构

PHP(Hypertext Preprocessor 超文本预处理器)是通用服务器端脚本编程语言&#xff0c;主要用于web开发实现动态web页面&#xff0c;也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时&#xff0c;php还提供了一个命令行接口&#xff0c;因此&#xff0c;其也可…

搭建LNMP环境并配置个人博客系统

LNMP是Linux&#xff08;操作系统&#xff09;、Nginx&#xff08;Web服务器&#xff09;、MySQL&#xff08;数据库&#xff09;和PHP&#xff08;脚本解释器&#xff09;的组合&#xff0c;常用于部署高性能的动态网站&#xff0c;如WordPress等博客平台 一、安装Linux操作系…

计算机专业大学四年应该如何规划(Java方向)

计算机专业的学生&#xff0c;如何在大学四年内提高自己的竞争力&#xff0c;毕业之后直接进大厂工作&#xff1f; 以下将从大学四年计算机专业的学习规划、课程设置、能力提升、参考书籍等方面&#xff0c;为同学们提供一些建议和指导。 大一&#xff1a; 主攻技能学习并且达…

K8S存储卷与PV,PVC

一、前言 Kubernetes&#xff08;K8s&#xff09;中的存储卷是用于在容器之间共享数据的一种机制。存储卷可以在多个Pod之间共享数据&#xff0c;并且可以保持数据的持久性&#xff0c;即使Pod被重新调度或者删除&#xff0c;数据也不会丢失。 Kubernetes支持多种类型的存储卷…

使用全局事件总线实现任意组件间的通讯

本文以vue2中爷孙组件通讯为例&#xff0c;需求是点击孙组件的按钮&#xff0c;实现关闭爷组件的弹窗。 全局事件总线是通过Vue实例的事件系统来实现组件之间的通讯&#xff0c;可以方便地在任何组件中进行事件的触发和监听。 以下是使用全局事件总线实现爷孙组件通讯的步骤&a…