一、描述
QTreeWidget 类是一个便利类,它提供了一个标准的树形小部件。
在最简单的形式中,可以通过以下方式构建树小部件:
QTreeWidget *treeWidget = new QTreeWidget();
treeWidget->setColumnCount(1);
QList<QTreeWidgetItem *> items;
for (int i = 0; i < 10; ++i)
items.append(new QTreeWidgetItem(static_cast<QTreeWidget *>(nullptr), QStringList(QString("item: %1").arg(i))));
treeWidget->insertTopLevelItems(0, items);
在将项目添加到树小部件之前,必须使用 setColumnCount() 设置列数。
二、属性成员
1、columnCount : int
在树小部件中显示的列数。
2、topLevelItemCount : const int
顶级项目的数量。默认值为 0。
三、成员函数
3.1、信号
1、void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
当前项目改变时发出这个信号。 当前项由 current 指定,这将替换上一项previous。
2、void itemActivated(QTreeWidgetItem *item, int column)
当用户通过单击或双击或按下特殊键(例如 Enter)激活项目时,会发出此信号。
column是被点击的项目的列。
3、void itemChanged(QTreeWidgetItem *item, int column)
当指定项中列的内容发生更改时,会发出此信号。
4、void itemClicked(QTreeWidgetItem *item, int column)
当用户在小部件内部单击时会发出此信号。
5、void itemCollapsed(QTreeWidgetItem *item)
当指定的项目折叠时发出此信号。
注意:调用 collapseAll() 时项目更改其状态,不会发出此信号。
6、void itemDoubleClicked(QTreeWidgetItem *item, int column)
当用户在小部件内双击时会发出此信号。column是被单击的项目的列。
7、void itemEntered(QTreeWidgetItem *item, int column)
当鼠标光标进入指定列上的项目时,会发出此信号。需要启用鼠标跟踪才能使用此功能。
8、void itemExpanded(QTreeWidgetItem *item)
当指定的项目被展开以显示其所有子项时,会发出此信号。
注意:调用 expandAll() 时项目更改其状态,不会发出此信号。
9、void itemPressed(QTreeWidgetItem *item, int column)
当用户在小部件内按下鼠标按钮时会发出此信号。column是被点击的项目的列。
10、void itemSelectionChanged()
当树小部件中的选择发生变化时,会发出此信号。
3.2、函数
1、void clear()
通过删除其所有项目和选择来清除树小部件。
2、void collapseItem(const QTreeWidgetItem *item)
关闭项目。这会导致包含项目子项的树被折叠。
3、void expandItem(const QTreeWidgetItem *item)
展开项目。 这会导致包含项目子项的树被展开。
4、void scrollToItem(const QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)
确保该项目可见,必要时使用指定的 hint 滚动视图。
5、void addTopLevelItem(QTreeWidgetItem *item)
void addTopLevelItems(const QList<QTreeWidgetItem *> &items)
将项目作为小部件中的顶级项目追加。
6、QList<QTreeWidgetItem *> findItems(const QString &text, Qt::MatchFlags flags, int column = 0)
在给定的列中使用给定的标志返回与给定文本匹配的项目列表。
7、QModelIndex indexFromItem(const QTreeWidgetItem *item, int column = 0)
返回与给定列中的给定项关联的 QModelIndex。
8、QTreeWidgetItem * itemFromIndex(const QModelIndex &index)
返回指向与给定索引关联的 QTreeWidgetItem 的指针。
9、int indexOfTopLevelItem(QTreeWidgetItem *item)
返回给定顶级项目的索引,如果找不到该项目,则返回 -1。
10、void insertTopLevelItem(int index, QTreeWidgetItem *item)
void insertTopLevelItems(int index, const QList<QTreeWidgetItem *> &items)
在视图的顶级索引处插入项目。如果该项目已插入其他地方,则不会插入。
11、QTreeWidgetItem * invisibleRootItem()
返回树小部件的不可见根项目。
不可见的根项通过QTreeWidgetItem API 提供了对树widget 的顶级项的访问,使得可以编写统一处理顶级项及其子项的功能(例如递归处理)。
12、QTreeWidgetItem * itemAt(const QPoint &p)
返回指向坐标 p 处的项目的指针。坐标相对于树小部件的 viewport()。
13、QWidget * itemWidget(QTreeWidgetItem *item, int column)
void setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget)
void removeItemWidget(QTreeWidgetItem *item, int column)
item中的小部件。小部件的 autoFillBackground 属性必须设置为 true,否则小部件的背景将是透明的,同时显示模型数据和树小部件项目。
此功能仅应用于在树小部件项目的位置显示静态内容。 如果要显示自定义动态内容或实现自定义编辑器小部件,请改用 QTreeView 和子类 QStyledItemDelegate。
注意:QTreeWidge拥有小部件的所有权。
14、void sortItems(int column, Qt::SortOrder order)
按给定列中的值按指定顺序对小部件中的项目进行排序。
15、QTreeWidgetItem * takeTopLevelItem(int index)
删除给定索引处的顶级项目并返回它。
16、QTreeWidgetItem * topLevelItem(int index)
返回给定索引处的顶级项目。