一、QTreeWidget Class

The QTreeWidget class provides a tree view that uses a predefined tree model. More...

Header: #include <QTreeWidget>
qmake: QT += widgets
Inherits: QTreeView
  • List of all members, including inherited members
  • Obsolete members

Properties

  • columnCount : int
  • topLevelItemCount : const int

Public Functions

  QTreeWidget(QWidget *parent = nullptr)
virtual ~QTreeWidget()
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)
QList<QTreeWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags, int column = 0) const
QTreeWidgetItem * headerItem() const
int indexOfTopLevelItem(QTreeWidgetItem *item) const
void insertTopLevelItem(int index, QTreeWidgetItem *item)
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
QWidget * itemWidget(QTreeWidgetItem *item, int column) const
void openPersistentEditor(QTreeWidgetItem *item, int column = 0)
void removeItemWidget(QTreeWidgetItem *item, int column)
QList<QTreeWidgetItem *> selectedItems() const
void setColumnCount(int columns)
void setCurrentItem(QTreeWidgetItem *item)
void setCurrentItem(QTreeWidgetItem *item, int column)
void setCurrentItem(QTreeWidgetItem *item, int column, QItemSelectionModel::SelectionFlags command)
void setHeaderItem(QTreeWidgetItem *item)
void setHeaderLabel(const QString &label)
void setHeaderLabels(const QStringList &labels)
void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget)
int sortColumn() const
void sortItems(int column, Qt::SortOrder order)
QTreeWidgetItem * takeTopLevelItem(int index)
QTreeWidgetItem * topLevelItem(int index) const
int topLevelItemCount() const
QRect visualItemRect(const QTreeWidgetItem *item) const

Reimplemented Public Functions

virtual void setSelectionModel(QItemSelectionModel *selectionModel) override

Public Slots

void clear()
void collapseItem(const QTreeWidgetItem *item)
void expandItem(const QTreeWidgetItem *item)
void scrollToItem(const QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)

Signals

void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
void itemActivated(QTreeWidgetItem *item, int column)
void itemChanged(QTreeWidgetItem *item, int column)
void itemClicked(QTreeWidgetItem *item, int column)
void itemCollapsed(QTreeWidgetItem *item)
void itemDoubleClicked(QTreeWidgetItem *item, int column)
void itemEntered(QTreeWidgetItem *item, int column)
void itemExpanded(QTreeWidgetItem *item)
void itemPressed(QTreeWidgetItem *item, int column)
void itemSelectionChanged()

Protected Functions

virtual bool dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction action)
QModelIndex indexFromItem(const QTreeWidgetItem *item, int column = 0) const
QTreeWidgetItem * itemFromIndex(const QModelIndex &index) const
virtual QMimeData * mimeData(const QList<QTreeWidgetItem *> items) const
virtual QStringList mimeTypes() const
virtual Qt::DropActions supportedDropActions() const

Reimplemented Protected Functions

virtual void dropEvent(QDropEvent *event) override
virtual bool event(QEvent *e) override

Detailed Description

转存失败重新上传取消

The QTreeWidget class is a convenience class that provides a standard tree widget with a classic item-based interface similar to that used by the QListView class in Qt 3. This class is based on Qt's Model/View architecture and uses a default model to hold items, each of which is a QTreeWidgetItem.

Developers who do not need the flexibility of the Model/View framework can use this class to create simple hierarchical lists very easily. A more flexible approach involves combining a QTreeView with a standard item model. This allows the storage of data to be separated from its representation.

In its simplest form, a tree widget can be constructed in the following way:

QTreeWidget *treeWidget = new QTreeWidget();
treeWidget->setColumnCount(1);
QList<QTreeWidgetItem *> items;
for (int i = 0; i < 10; ++i)items.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(QString("item: %1").arg(i))));
treeWidget->insertTopLevelItems(0, items);

Before items can be added to the tree widget, the number of columns must be set with setColumnCount(). This allows each item to have one or more labels or other decorations. The number of columns in use can be found with the columnCount() function.

The tree can have a header that contains a section for each column in the widget. It is easiest to set up the labels for each section by supplying a list of strings with setHeaderLabels(), but a custom header can be constructed with a QTreeWidgetItem and inserted into the tree with the setHeaderItem() function.

The items in the tree can be sorted by column according to a predefined sort order. If sorting is enabled, the user can sort the items by clicking on a column header. Sorting can be enabled or disabled by calling setSortingEnabled(). The isSortingEnabled() function indicates whether sorting is enabled.

See also QTreeWidgetItem, QTreeWidgetItemIterator, QTreeView, Model/View Programming, and Settings Editor Example.

二、QTreeWidget的一些基本操作

1.insertTopLevelItems,insertTopLevelItem用来添加顶层的item

QTreeWidget *treeWidget = new QTreeWidget(this);//创建
treeWidget->setColumnCount(1);  //设置列
treeWidget->setHeaderLabel(tr("item tree"));    //设置标题
treeWidget->setGeometry(0,0,this->width(),this->height());  //设置大小
QList<QTreeWidgetItem *> items;//创建两个节点
QTreeWidgetItem *fItem1 = new QTreeWidgetItem(treeWidget,QStringList(QString("f1")));
QTreeWidgetItem *fItem2 = new QTreeWidgetItem(treeWidget,QStringList(QString("f2")));items.append(fItem1);
items.append(fItem2);
//添加顶层节点
treeWidget->insertTopLevelItems(0,items);
//节点始终保持展开
treeWidget->setItemsExpandable(false);
treeWidget->expandAll();

2.父节点通过addChild增加子节点

//创建子节点
QTreeWidgetItem *fItem1a = new QTreeWidgetItem(fItem1,QStringList(QString("f1a")));
QTreeWidgetItem *fItem1b = new QTreeWidgetItem(fItem1,QStringList(QString("f1b")));QTreeWidgetItem *fItem2a = new QTreeWidgetItem(fItem2,QStringList(QString("f2a")));
QTreeWidgetItem *fItem2b = new QTreeWidgetItem(fItem2,QStringList(QString("f2b")));//添加字节点
fItem1->addChild(fItem1a);
fItem1->addChild(fItem1b);fItem2->addChild(fItem2a);
fItem2->addChild(fItem2b);

3.建立鼠标点击右键点击信号检测

//检测点击事件connect(treeWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(itemClick(QTreeWidgetItem*,int)));//检测鼠标右键
treeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(treeWidget,SIGNAL(customContextMenuRequested(const QPoint&)), this,SLOT(popMenu(const QPoint&)));

4.槽函数

void Widget::itemClick(QTreeWidgetItem *item, int column)
{QTreeWidgetItem *parent = item->parent();   //获取父节点if(NULL==parent) //注意:最顶端项是没有父节点的return;int col = parent->indexOfChild(item); //item在父项中的节点行号(从0开始)
}//弹出菜单
void Widget::popMenu(const QPoint &)
{QTreeWidgetItem* curItem=treeWidget->currentItem();  //**获取当前被点击的节点if(curItem == NULL || curItem->parent() == NULL)return;           //右键的位置在空白位置右击或者点击的是顶层item//创建一个actionQAction deleteItem(QString::fromLocal8Bit("&删除"),this);connect(&deleteItem, SIGNAL(triggered()), this, SLOT(deleteItem()));QPoint pos;//创建一个菜单栏QMenu menu(treeWidget);menu.addAction(&deleteItem);menu.exec(QCursor::pos());  //在当前鼠标位置显示
}//删除item
void Widget::deleteItem()
{QTreeWidgetItem* curItem=treeWidget->currentItem();curItem->parent()->removeChild(treeWidget->currentItem());
}

三、QTreeWidget例子

#ifndef TREEWIDGET_H
#define TREEWIDGET_H #include <QtGui> class TreeWidget : public QWidget
{
public: TreeWidget(); private: QTreeWidget *tree;
}; #endif // TREEWIDGET_H
#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);
} 

Qt学习笔记之常用控件QTreeWidget相关推荐

  1. Qt学习笔记之常用控件QlistWidget

    一.QListWidget Class The QListWidget class provides an item-based list widget. More... Header: #inclu ...

  2. 【MFC】学习笔记:常用控件之组合框(Combo Box)

    01.目录 目录 01.目录 02.控件介绍 03.控件的消息通知函数 04.创建组合框控件及成员函数介绍 4.1 组合框的创建 4.2 CComboBox类的主要成员函数 05.应用实例 06.总结 ...

  3. Qt学习笔记-QSS装饰控件

    运行截图如下: QDialog的样式表: QDialog{ background-color:#4CAF50; }QPushButton{background-color: white;border: ...

  4. [QT_015]Qt学习之基于条目控件的自定义特性(拖拽+右键菜单+样式)

    本文转自:<Qt编程指南>        作者:奇先生 Qt编程指南,Qt新手教程,Qt Programming Guide 本节介绍基于条目控件的定制特性,首先介绍条目的拖拽,列表控件. ...

  5. JavaFX 学习笔记——窗口与控件

    前言 如今比较流行的桌面gui框架有WPF.WinForm.Qt.javafx等.其中WPF和WinForm目前还只能在运行Winsows上.Qt(widget)是一个很强大的跨平台C++框架(不只是 ...

  6. vs2010 学习Silverlight学习笔记(7):控件样式与模板

    概要: 终于知道Silverlight--App.xaml是干什么用的了,不仅可以用来封装样式(类似css),还可以制定控件模版...好强大的功能啊. 封装: 继续学习<一步一步学Silverl ...

  7. qt中创键树形控件QTreeWidget与QStackWidget相绑定

    引言 实现点击下拉列表的项对应的跳转到相应的堆栈窗口,且每个堆栈窗口中都有各自的树形控件,更换可执行文件所在目录下的文件data.json后,点击更新按钮,可以更新所有堆栈窗口的树形控件. 效果 示例 ...

  8. vb.net listview 删除选定行_VBA学习笔记59-1: listview控件

    学习资源:<Excel VBA从入门到进阶>第59集 by兰色幻想 本节学习Listview控件,它可以用多种视图方式显示项目的控件.由于其外形美观而且非常实用,所以使用频率很高. Lis ...

  9. kendo treeview 修改节点显示值_VBA学习笔记60-1: Treeview控件

    学习资源:<Excel VBA从入门到进阶>第60集 by兰色幻想 本节讲Treeview控件. TreeView控件是以树形结构显示数据的控件.利用TreeView控件,可以设计出树形结 ...

最新文章

  1. 网络推广专员浅析网络推广中如何分析网站建设水平孰优孰劣?
  2. matlab如何画图时去掉陆地点,科学网—Matlab m_map一张地图上使用用多个colormap以及patch精细岸线数据去除河流 - 肖鑫的博文...
  3. 解决浏览器刷新vuex数据丢失问题
  4. UVA-806 Spatial Structures (四分树)
  5. 【[Offer收割]编程练习赛9 C】三等分
  6. 【小题目】输入三个数字表示年月日,输出这一天在这一年是第几天
  7. 模型融合(stackingblending)
  8. 简约几何海报背景设计素材,可盐可甜
  9. R语言—如何下载和使用包
  10. [踩坑记录]VS2017+大恒MER-131-210U3C相机
  11. python用余弦相似度计算英文文本相似度
  12. Win11控制面板快捷键 Win11打开控制面板的多种方法
  13. 通达信波段王指标公式主图_通达信波段专用主图指标公式
  14. 【 C++ 】AVL树
  15. DOC与DOCX的区别
  16. 校招经验 | 三无菜鸡水硕如何拿到多个高薪offer?
  17. hadoop编程:分析CSDN注册邮箱分布情况
  18. [单片机框架] [kv_sys] 实现一个简易KV键值系统(升级版)
  19. 机器学习模型 知乎_深度剖析知乎目前的内容架构模型
  20. 诊所管理系统方案/案列/APP/软件/小程序/网站

热门文章

  1. boost::mpl模块实现copy相关的测试程序
  2. boost::math::quadrature::exp_sinh用法的测试程序
  3. GDCM:寻找PatientRootQuery的测试程序
  4. GDCM:创建DICOMDIR的测试程序
  5. GDCM:读取和转储DICOMDIR文件的测试程序
  6. Boost:异步操作,涉及重新打包多个操作,但选择仅调用其中一个的测试程序
  7. Boost:ssl服务测试程序
  8. DCMTK:DIMSE状态代码和类的测试程序
  9. VTK:小部件之BoxWidget
  10. OpenCV微笑探测器smile detector的实例(附完整代码)