QTreeWidget 类

QTreeWidget 类提供了一个使用预定义树模型的树视图。 更多...

头文件 #include <QTreeWidget>
CMakefind_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmakeQT += widgets
继承 QTreeView

属性

公共函数

QTreeWidget(QWidget *parent = nullptr)
virtual~QTreeWidget()
voidaddTopLevelItem(QTreeWidgetItem *item)
voidaddTopLevelItems(const QList<QTreeWidgetItem *> &items)
voidclosePersistentEditor(QTreeWidgetItem *item, int column = 0)
intcolumnCount() const
intcurrentColumn() const
QTreeWidgetItem *currentItem() const
voideditItem(QTreeWidgetItem *item, int column = 0)
QList<QTreeWidgetItem *>findItems(const QString &text, Qt::MatchFlags flags, int column = 0) const
QTreeWidgetItem *headerItem() const
QModelIndexindexFromItem(const QTreeWidgetItem *item, int column = 0) const
intindexOfTopLevelItem(QTreeWidgetItem *item) const
voidinsertTopLevelItem(int index, QTreeWidgetItem *item)
voidinsertTopLevelItems(int index, const QList<QTreeWidgetItem *> &items)
QTreeWidgetItem *invisibleRootItem() const
boolisPersistentEditorOpen(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
QTreeWidgetItem *itemFromIndex(const QModelIndex &index) const
QWidget *itemWidget(QTreeWidgetItem *item, int column) const
voidopenPersistentEditor(QTreeWidgetItem *item, int column = 0)
voidremoveItemWidget(QTreeWidgetItem *item, int column)
QList<QTreeWidgetItem *>selectedItems() const
voidsetColumnCount(int columns)
voidsetCurrentItem(QTreeWidgetItem *item)
voidsetCurrentItem(QTreeWidgetItem *item, int column)
voidsetCurrentItem(QTreeWidgetItem *item, int column, QItemSelectionModel::SelectionFlags command)
voidsetHeaderItem(QTreeWidgetItem *item)
voidsetHeaderLabel(const QString &label)
voidsetHeaderLabels(const QStringList &labels)
voidsetItemWidget(QTreeWidgetItem *item, int column, QWidget *widget)
intsortColumn() const
voidsortItems(int column, Qt::SortOrder order)
QTreeWidgetItem *takeTopLevelItem(int index)
QTreeWidgetItem *topLevelItem(int index) const
inttopLevelItemCount() const
QRectvisualItemRect(const QTreeWidgetItem *item) const

重新实现公共函数

虚拟 voidsetSelectionModel(QItemSelectionModel *selectionModel) override

公共槽函数

void清除()
voidcollapseItem(const QTreeWidgetItem *item)
voidexpandItem(const QTreeWidgetItem *item)
voidscrollToItem(const QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)

信号

voidcurrentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
voiditemActivated(QTreeWidgetItem *item, int column)
voiditemChanged(QTreeWidgetItem *item, int column)
voiditemClicked(QTreeWidgetItem *item, int column)
voiditemCollapsed(QTreeWidgetItem *item)
voiditemDoubleClicked(QTreeWidgetItem *item, int column)
voiditemEntered(QTreeWidgetItem *item, int column)
voiditemExpanded(QTreeWidgetItem *item)
voiditemPressed(QTreeWidgetItem *item, int column)
voiditemSelectionChanged()

受保护函数

虚拟 booldropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction action)
虚拟 QMimeData *mimeData(const QList<QTreeWidgetItem *> &items) const
虚拟 QStringListmimeTypes() const
虚拟 Qt::DropActionssupportedDropActions() const

重新实现受保护函数

虚拟 voiddropEvent(QDropEvent *event) override
虚拟 boolevent(QEvent *e) override

详细描述

QTreeWidget类是一个便利类,它提供了一个具有经典项目界面、类似于Qt 3中QListView类的标准树形小部件。此类基于Qt的模型/视图架构,并使用默认的模型来存储项目,每个项目都是一个QTreeWidgetItem

不需要模型/视图框架灵活性的开发者可以使用此类非常容易地创建简单的层次列表。更灵活的方法是将QTreeView与标准项目模型组合。这使得数据的存储与其表示分离。

以最简单形式,树形小部件可以按以下方式构建

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()设置列数。这允许每个项目有一个或多个标签或其他装饰。可以使用columnCount()函数找到正在使用的列数。

树可以有一个包含该部件中每列分区的标题。通过使用setHeaderLabels()提供字符串列表来设置每个分区的标签是最容易的,但可以使用QTreeWidgetItemsetHeaderItem()函数构建自定义标题并将其插入到树中。

可以根据预定义的排序顺序按列对树中的项目进行排序。如果启用排序,用户可以通过单击列标题来对项目进行排序。可以通过调用setSortingEnabled()启用或禁用排序。函数isSortingEnabled()指示是否启用了排序。

另见QTreeWidgetItemQTreeWidgetItemIteratorQTreeView,以及模型/视图编程

属性文档

columnCount : int

此属性存储在树形小部件中显示的列数

默认情况下,此属性的值为1。

访问函数

intcolumnCount() const
voidsetColumnCount(int columns)

[只读] topLevelItemCount : const int

此属性存储顶级项的数量

默认情况下,此属性的值为0。

访问函数

inttopLevelItemCount() const

另见 columnCount() 和 currentItem

成员函数文档

[显式] QTreeWidget::QTreeWidget(QWidget *parent = nullptr)

使用给定的构建一个树形小部件。

[虚拟 noexcept] QTreeWidget::~QTreeWidget()

销毁树形小部件和所有其项目。

void QTreeWidget::addTopLevelItem(QTreeWidgetItem *item)

作为顶级项添加到部件。

另见 insertTopLevelItem

void QTreeWidget::addTopLevelItems(const QList<QTreeWidgetItem *> &items)

将项目列表添加为小部件的顶级项目。

参见 insertTopLevelItems()。

[slot] void QTreeWidget::clear()

清除树小部件,通过移除所有项目及选择。

注意:由于每个项目在删除前都从树小部件中移除,因此从项目的析构函数中调用QTreeWidgetItem::treeWidget()时,其返回值将是无效的。

参见 takeTopLevelItem()、topLevelItemCount() 以及 columnCount()。

void QTreeWidget::closePersistentEditor(QTreeWidgetItem *item, int column = 0)

关闭给定列中项目的持久编辑器。

如果为该项和列打开持久编辑器,则此函数无任何效果。

参见 openPersistentEditor() 和 isPersistentEditorOpen()。

[slot] void QTreeWidget::collapseItem(const QTreeWidgetItem *item)

关闭 item。这将导致包含此项目子项的树折叠。

参见 expandItem()、currentItem()、itemAt() 以及 topLevelItem()。

int QTreeWidget::currentColumn() const

返回树小部件中的当前列。

参见 setCurrentItem() 和 columnCount()。

QTreeWidgetItem *QTreeWidget::currentItem() const

返回树小部件中的当前项。

参见 setCurrentItem() 和 currentItemChanged()。

[signal] void QTreeWidget::currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)

当当前项发生变化时发出此信号。当前项由 current 指定,并用它来替换 previous 当前项。

参见 setCurrentItem()。

[override virtual protected] void QTreeWidget::dropEvent(QDropEvent *event)

重新实现: QAbstractItemView::dropEvent(QDropEvent *event)

[虚拟保护] bool QTreeWidget::dropMimeData(QTreeWidgetItem *parent, int index, const QMimeData *data, Qt::DropAction action)

处理由拖放操作提供的数据,该操作在给定 indexparent 项中以给定的 action 结束。

默认实现如果通过解码 mime 数据并将其插入到模型中成功处理了放置,则返回 true;否则返回 false

另请参阅 supportedDropActions()。

void QTreeWidget::editItem(QTreeWidgetItem *item, int column = 0)

如果它可以编辑,则开始编辑给定 column 中的 item

[重写虚保护] bool QTreeWidget::event(QEvent *e)

重实现了: QAbstractItemView::event(QEvent *event)。

[槽] void QTreeWidget::expandItem(const QTreeWidgetItem *item)

展开 item。这会导致包含 item 子项的树展开。

另请参阅 collapseItem(),currentItem(),itemAt(),topLevelItem() 以及 itemExpanded()。

QList<QTreeWidgetItem *> QTreeWidget::findItems(const QString &text, Qt::MatchFlags flags, int column = 0) const

返回与给定 text 匹配的项目列表,使用给定的 flags 和给定 column

QModelIndex QTreeWidget::headerItem() const

返回用于树小部件标题的项。

另请参阅 setHeaderItem()。

QModelIndex QTreeWidget::indexFromItem(const QTreeWidgetItem *item, int column = 0) const

返回与给定 item 关联的 QModelIndex,在给定的 column 中。

注意: 在 Qt 5.7 之前的版本中,此函数接受一个非 constitem

另请参阅 itemFromIndex() 和 topLevelItem()。

int QTreeWidget::indexOfTopLevelItem(QTreeWidgetItem *item) const

返回给定顶层项目的索引,如果找不到项目则返回-1。

另请参阅sortItems() 和 topLevelItemCount()。

void QTreeWidget::insertTopLevelItem(int index, QTreeWidgetItem *item)

在视图的顶层将项目插入到索引

如果项目已 elsewhere 插入,则不会插入。

另请参阅addTopLevelItem() 和 columnCount()。

void QTreeWidget::insertTopLevelItems(int index, const QList<QTreeWidgetItem *> &items)

在视图的顶层将项目列表插入到索引

如果项目已 elsewhere 插入,则不会插入。

另请参阅addTopLevelItems()。

QTreeWidgetItem *QTreeWidget::invisibleRootItem() const

返回树小部件的不可见根项目。

不可见根项目提供了通过 QTreeWidgetItem API 访问树小部件顶层项目的方法,使得可以编写统一处理顶层项目和其子项目的函数;例如,递归函数。

bool QTreeWidget::isPersistentEditorOpen(QTreeWidgetItem *item, int column = 0) const

返回在列 column 的项目 item 是否有一个持久编辑器是打开的。

另请参阅openPersistentEditor() 和 closePersistentEditor()。

QTreeWidgetItem *QTreeWidget::itemAbove(const QTreeWidgetItem *item) const

返回给定 项目 上方的项目。

[信号] void QTreeWidget::itemActivated(QTreeWidgetItem *item, int column)

当用户通过单次或双击(根据平台,即通过 QStyle::SH_ItemView_ActivateItemOnSingleClick 风格提示)或按特殊键(例如,Enter)激活项目时,会发出此信号。

指定的 项目 是被点击的项目,如果没有点击任何项目则 nullptr 是被点击的项目列,如果没有点击任何项目则 -1。

QTreeWidgetItem *QTreeWidget::itemAt(const QPoint &p) const

返回指向坐标p处项目的指针。坐标相对于树小部件的视口

另请参阅visualItemRect()。

QTreeWidgetItem *QTreeWidget::itemAt(int x, int y) const

这是一个重载函数。

返回坐标(xy)处的项目的指针。坐标相对于树小部件的视口

QTreeWidgetItem *QTreeWidget::itemBelow(const QTreeWidgetItem *item) const

返回给定 item 下可视的项目。

[信号] void QTreeWidget::itemChanged(QTreeWidgetItem *item, int column)

当指定 itemcolumn 中的内容发生变化时,发出此信号。

[信号] void QTreeWidget::itemClicked(QTreeWidgetItem *item, int column)

当用户在部件内部点击时,发出此信号。

指定的 item 是被点击的项目。 column 是被点击的项目列。如果没有点击任何项目,则不会发出信号。

[信号] void QTreeWidget::itemCollapsed(QTreeWidgetItem *item)

当指定的 item 被折叠而使其子项都不显示时,发出此信号。

注意:当调用collapseAll() 时,如果项目状态发生变化,则不会发出此信号。

另请参阅:QTreeWidgetItem::isExpanded(),itemExpanded(),以及collapseItem()。

[信号] void QTreeWidget::itemDoubleClicked(QTreeWidgetItem *item, int column)

当用户在部件内部双击时,发出此信号。

指定的 item 是被点击的项目,如果没有点击任何项目,则为 nullptrcolumn 是被点击的项目列。如果没有双击任何项目,则不会发出信号。

[信号] void QTreeWidget::itemEntered(QTreeWidgetItem *item, int column)

当鼠标光标进入指定 column 上的 item 时,发出此信号。 QTreeWidget 需要启用鼠标跟踪功能才能使用此功能。

[信号] void QTreeWidget::itemExpanded(QTreeWidgetItem *item)

当指定的 item 被展开以显示所有子项时,发出此信号。

参见 QTreeWidgetItem::isExpanded()、itemCollapsed() 和 expandItem()。

QTreeWidgetItem *QTreeWidget::itemFromIndex(const QModelIndex &index) const

返回与给定 index 相关的 QTreeWidgetItem 指针。

参见 indexFromItem()。

[信号] void QTreeWidget::itemPressed(QTreeWidgetItem *item, int column)

当用户在控件内按下鼠标按钮时,发出此信号。

指定的 项目 是被点击的项目,如果没有点击任何项目则 nullptr 是被点击的项目列,如果没有点击任何项目则 -1。

[信号] void QTreeWidget::itemSelectionChanged()

当树控件中的选择改变时,发出此信号。可以使用 selectedItems() 查找当前选择。

QWidget *QTreeWidget::itemWidget(QTreeWidgetItem *item, int column) const

返回在指定 item 和给定的 column 指定的单元格中显示的控件。

参见 setItemWidget()。

[虚保护] QMimeData *QTreeWidget::mimeData(const QList<QTreeWidgetItem *> &items) const

返回一个包含指定 items 序列化描述的对象。用于描述项的格式是从 mimeTypes() 函数获得的。

如果项列表为空,返回 nullptr 而不是序列化的空列表。

[虚保护] QStringList QTreeWidget::mimeTypes() const

返回可以用于描述树项列表的 MIME 类型列表。

参见 mimeData()。

void QTreeWidget::openPersistentEditor(QTreeWidgetItem *item, int column = 0)

打开给定 columnitem 的持久性编辑器。

参见 closePersistentEditor() 和 isPersistentEditorOpen()。

void QTreeWidget::removeItemWidget(QTreeWidgetItem *item, int column)

删除在给定 item 和给定 column 中设定的控件。

[槽] void QTreeWidget::scrollToItem(const QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)

确保项目可见,如果需要,使用指定的提示滚动视图。

另请参阅 currentItem(),itemAt() 和 topLevelItem()。

QList<QTreeWidgetItem> QTreeWidget::selectedItems() const

返回所有选中的非隐藏项目的列表。

另请参阅 itemSelectionChanged

void QTreeWidget::setCurrentItem(QTreeWidgetItem *item)

设置树形控件中的当前项目。

除非选择模式为 NoSelection,否则也会选中该项目。

另请参阅 currentItem() 和 currentItemChanged()。

void QTreeWidget::setCurrentItem(QTreeWidgetItem *item, int column)

设置树形控件中的当前项目,并将当前列设置为 column

另请参阅 currentItem

void QTreeWidget::setCurrentItem(QTreeWidgetItem *item, int column, QItemSelectionModel::SelectionFlags command)

使用给定的 command 设置树形控件中的当前项目,并将当前列设置为 column

另请参阅 currentItem

void QTreeWidget::setHeaderItem(QTreeWidgetItem *item)

设置树形控件的标题 item。标题中每一列的标签由项目的相应标签提供。

树形控件将拥有该项目的所有权。

另请参阅 headerItem() 和 setHeaderLabels()。

void QTreeWidget::setHeaderLabel(const QString &label)

等同于 setHeaderLabels(QStringList(label))。

void QTreeWidget::setHeaderLabels(const QStringList &labels)

在每个 labels 列表中为每个项目在标题中添加一个列,并为每个列设置标签。

注意,setHeaderLabels() 不会删除现有列。

另请参阅 setHeaderItem() 和 setHeaderLabel()。

void QTreeWidget::setItemWidget(QTreeWidgetItem *item, int column, QWidget *widget)

将给定的 widget 设置为显示在由给定的 itemcolumn 指定的单元格中。

给定的 widgetautoFillBackground 属性必须设置为 true,否则 widget 的背景将是透明的,将显示模型数据和树形控件项目。

此函数应仅用于在树小部件项的占位符中显示静态内容。如果您想显示自定义动态内容或实现自定义编辑小部件,请使用QTreeView并派生自QStyledItemDelegate

在设置项层次结构之前不能调用此函数,即,在设置widget之前必须先将持有widgetQTreeWidgetItem添加到视图中。

注意:树将获取小部件的所有权。

另请参阅:itemWidget() 和代理类

[重载虚函数] void QTreeWidget::setSelectionModel(QItemSelectionModel *selectionModel)

重实现了: QTreeView::setSelectionModel(QItemSelectionModel *selectionModel)。

int QTreeWidget::sortColumn() const

返回用于对 widget 内容进行排序的列。

另请参阅:sortItems

void QTreeWidget::sortItems(int column, Qt::SortOrder order)

按指定order按给定column中的值对 widget 中的项进行排序。

另请参阅:sortColumn

[虚保护] Qt::DropActions QTreeWidget::supportedDropActions() const

返回此视图支持的拖放操作。

另请参阅:Qt::DropActions

QTreeWidgetItem *QTreeWidget::takeTopLevelItem(int index)

从树中移除给定index的位置的顶层项并返回它,否则返回nullptr

另请参阅:insertTopLevelItemtopLevelItemtopLevelItemCount

QTreeWidgetItem *QTreeWidget::topLevelItem(int index) const

返回给定index的顶层项,如果该项不存在,则返回nullptr

另请参阅:topLevelItemCountinsertTopLevelItem

QRect QTreeWidget::visualItemRect(const QTreeWidgetItem *item) const

返回占据视图中item位置的矩形。

另请参阅:itemAt

© 2024 Qt公司有限公司。本文件中包含的文档贡献归其各自所有者所有。本文件中提供的文档是根据自由软件基金会发布的、在GNU自由文档许可协议版本1.3下许可的。Qt及其相关标志是芬兰及其它国家/地区的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。