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

2024-02-29 09:28

本文主要是介绍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,只是取得下层节点,没有下层则返回空指针
在这里插入图片描述

这篇关于Qt|QTreewidget类下函数qt助手详解说明示例(上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/758297

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java中StopWatch的使用示例详解

《Java中StopWatch的使用示例详解》stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,这篇文章主要介绍... 目录stopWatch 是org.springframework.util 包下的一个工具类,使用它

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义