QTreeWidget 类提供使用预定义树模型的树视图。 更多...
头: | #include <QTreeWidget> |
CMake: |
find_package(Qt6 COMPONENTS Widgets REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
继承: | QTreeView |
QTreeWidget (QWidget * parent = nullptr) | |
virtual | ~QTreeWidget () |
void | addTopLevelItem (QTreeWidgetItem * item ) |
void | addTopLevelItems (const QList<QTreeWidgetItem *> & 项 ) |
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 |
QModelIndex | indexFromItem (const QTreeWidgetItem * item , int column = 0) const |
int | indexOfTopLevelItem (QTreeWidgetItem * item ) const |
void | insertTopLevelItem (int index , QTreeWidgetItem * item ) |
void | insertTopLevelItems (int index , const QList<QTreeWidgetItem *> & 项 ) |
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 |
QTreeWidgetItem * | itemFromIndex (const QModelIndex & index ) 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 命令 ) |
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 |
virtual void | setSelectionModel (QItemSelectionModel * selectionModel ) override |
void | clear () |
void | collapseItem (const QTreeWidgetItem * item ) |
void | expandItem (const QTreeWidgetItem * item ) |
void | scrollToItem (const QTreeWidgetItem * item , QAbstractItemView::ScrollHint hint = EnsureVisible) |
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 () |
virtual bool | dropMimeData (QTreeWidgetItem * parent , int index , const QMimeData * data , Qt::DropAction action ) |
virtual QMimeData * | mimeData (const QList<QTreeWidgetItem *> & 项 ) const |
virtual QStringList | mimeTypes () const |
virtual Qt::DropActions | supportedDropActions () const |
virtual void | dropEvent (QDropEvent * event ) override |
virtual bool | event (QEvent * e ) override |
QTreeWidget 类是提供标准树 Widget 的方便类,采用基于项的经典接口类似使用 QListView 类在 Qt 3。此类基于 Qt 模型/视图体系结构,并使用默认模型来保持项,其中每个项是 QTreeWidgetItem .
不需要灵活模型/视图框架的开发者可以使用此类,非常轻松地创建简单分层列表。更灵活方式涉及组合 QTreeView 采用标准项模型。这允许将数据存储与其表示分开。
以最简单形式,可以按以下方式构造树 Widget:
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);
在可以把项添加到树 Widget 之前,必须设置列数采用 setColumnCount ()。这允许每项拥有一个或多个标签或其它装饰。可以找到所用列数采用 columnCount () 函数。
树可以拥有包含 Widget 每列区间的 Header (头)。为每区间设置标签的最简单方式是通过提供字符串列表采用 setHeaderLabels (),但可以构造自定义 Header (头) 采用 QTreeWidgetItem 并插入树采用 setHeaderItem () 函数。
树中的项可以根据预定义排序次序按列排序。若排序被启用,用户可以通过点击列 Header (头) 排序项。可以启用或禁用排序通过调用 setSortingEnabled() 。 isSortingEnabled() 函数指示是否启用排序。
另请参阅 QTreeWidgetItem , QTreeWidgetItemIterator , QTreeView , 模型/视图编程 ,和 设置编辑器范例 .
此特性保持在树 Widget 中显示的列数
默认情况下,此特性拥有 1 值。
访问函数:
int | columnCount () const |
void | setColumnCount (int columns ) |
[read-only]
topLevelItemCount
: const
int
此特性保持顶层项数
默认情况下,此特性拥有 0 值。
访问函数:
int | topLevelItemCount () const |
另请参阅 columnCount () 和 currentItem ().
构造树 Widget 采用给定 parent .
[slot]
void
QTreeWidget::
clear
()
通过移除其所有项和选定,清零树 Widget。
注意: 由于在删除之前会从树 Widget 移除各项,返回值对于 QTreeWidgetItem::treeWidget () 将无效,当从项析构函数调用时。
另请参阅 takeTopLevelItem (), topLevelItemCount (),和 columnCount ().
[slot]
void
QTreeWidget::
collapseItem
(const
QTreeWidgetItem
*
item
)
关闭 item 。这导致包含项子级的树被折叠。
另请参阅 expandItem (), currentItem (), itemAt (),和 topLevelItem ().
[signal]
void
QTreeWidget::
currentItemChanged
(
QTreeWidgetItem
*
current
,
QTreeWidgetItem
*
previous
)
此信号被发射在当前项改变时。当前项指定通过 current ,且这替换 previous 当前项。
另请参阅 setCurrentItem ().
[slot]
void
QTreeWidget::
expandItem
(const
QTreeWidgetItem
*
item
)
展开 item 。这导致包含项子级的树被展开。
另请参阅 collapseItem (), currentItem (), itemAt (), topLevelItem (),和 itemExpanded ().
[signal]
void
QTreeWidget::
itemActivated
(
QTreeWidgetItem
*
item
,
int
column
)
此信号被发射当用户通过单击或双击激活项时 (从属平台,即:在 QStyle::SH_ItemView_ActivateItemOnSingleClick 样式提示) 或按下特殊键 (如: Enter ).
指定
item
是被点击项,或
nullptr
若没有点击项。
column
是被点击的项的列,或 -1 若没有点击项。
[signal]
void
QTreeWidget::
itemChanged
(
QTreeWidgetItem
*
item
,
int
column
)
此信号被发射当内容在 column 以指定 item 改变。
[signal]
void
QTreeWidget::
itemClicked
(
QTreeWidgetItem
*
item
,
int
column
)
此信号被发射当用户在 Widget 内点击时。
指定 item 是被点击项。 column 是项的被点击列。若没有点击项,不会发射信号。
[signal]
void
QTreeWidget::
itemCollapsed
(
QTreeWidgetItem
*
item
)
此信号被发射当指定 item 被折叠以便不显示其子级。
注意: 此信号不会被发射若项改变其状态当 collapseAll () 被援引。
另请参阅 QTreeWidgetItem::isExpanded (), itemExpanded (),和 collapseItem ().
[signal]
void
QTreeWidget::
itemDoubleClicked
(
QTreeWidgetItem
*
item
,
int
column
)
此信号被发射当用户在 Widget 内双击时。
指定
item
是被点击项,或
nullptr
若没有点击项。
column
是项的被点击列。若没有项被双击,不会发射信号。
[signal]
void
QTreeWidget::
itemEntered
(
QTreeWidgetItem
*
item
,
int
column
)
此信号被发射当鼠标光标进入 item 覆盖指定 column . QTreeWidget 需要启用鼠标追踪,为使此特征能工作。
[signal]
void
QTreeWidget::
itemExpanded
(
QTreeWidgetItem
*
item
)
此信号被发射当指定 item 被展开以便显示其所有子级。
注意: 此信号不会被发射若项改变其状态当 expandAll () 被援引。
另请参阅 QTreeWidgetItem::isExpanded (), itemCollapsed (),和 expandItem ().
[signal]
void
QTreeWidget::
itemPressed
(
QTreeWidgetItem
*
item
,
int
column
)
此信号被发射当用户在 Widget 内按下鼠标按钮时。
指定
item
是被点击项,或
nullptr
若没有点击项。
column
是被点击的项的列,或 -1 若没有点击项。
[signal]
void
QTreeWidget::
itemSelectionChanged
()
此信号被发射当树 Widget 选定改变时。可以找到当前选定采用 selectedItems ().
[slot]
void
QTreeWidget::
scrollToItem
(const
QTreeWidgetItem
*
item
,
QAbstractItemView::ScrollHint
hint
= EnsureVisible)
确保 item 可见,卷动视图若有必要使用指定 hint .
另请参阅 currentItem (), itemAt (),和 topLevelItem ().
[虚拟]
QTreeWidget::
~QTreeWidget
()
销毁树 Widget 及其所有项。
追加 item 作为 Widget 顶层项。
另请参阅 insertTopLevelItem ().
追加列表 项 作为 Widget 顶层项。
另请参阅 insertTopLevelItems ().
关闭持久编辑器为 item 以给定 column .
此函数不起作用,若此项和列的组合没有打开持久编辑器。
另请参阅 openPersistentEditor () 和 isPersistentEditorOpen ().
返回树 Widget 当前列。
另请参阅 setCurrentItem () 和 columnCount ().
返回树 Widget 中的当前项。
另请参阅 setCurrentItem () 和 currentItemChanged ().
[override virtual protected]
void
QTreeWidget::
dropEvent
(
QDropEvent
*
event
)
重实现: QAbstractItemView::dropEvent (QDropEvent *event).
[virtual protected]
bool
QTreeWidget::
dropMimeData
(
QTreeWidgetItem
*
parent
,
int
index
, const
QMimeData
*
data
,
Qt::DropAction
action
)
处理 data 的提供是通过结束拖放操作,按给定 action 在 index 以给定 parent 项。
默认实现返回
true
若掉落成功处理通过解码 MIME 数据并将其插入模型;否则它返回
false
.
另请参阅 supportedDropActions ().
开始编辑 item 以给定 column 若它可编辑。
[override virtual protected]
bool
QTreeWidget::
event
(
QEvent
*
e
)
重实现: QAbstractItemView::event (QEvent *event).
返回的项列表匹配给定 text ,使用给定 flags ,在给定 column .
返回用于树小部件 Header (头部) 的项。
另请参阅 setHeaderItem ().
返回 QModelIndex 关联给定 item 以给定 column .
注意:
在 Qt 5.7 之前,此函数接受非
const
item
.
另请参阅 itemFromIndex () 和 topLevelItem ().
返回索引为给定顶层 item ,或 -1 若找不到项。
另请参阅 sortItems () 和 topLevelItemCount ().
插入 item at index 在视图的顶层。
不会插入项,若已插入在某些地方。
另请参阅 addTopLevelItem () 和 columnCount ().
插入列表 项 at index 在视图的顶层。
不会插入项,若已插入在某些地方。
另请参阅 addTopLevelItems ().
返回树 Widget 的不可见根项。
不可见根项提供对树 Widget 顶层项的访问透过 QTreeWidgetItem API,使编写可以按统一方式处理顶层项及其子级的函数成为可能;例如:递归函数。
[since 5.10]
bool
QTreeWidget::
isPersistentEditorOpen
(
QTreeWidgetItem
*
item
,
int
column
= 0) const
返回是否打开持久编辑器为项 item 在列 column .
该函数在 Qt 5.10 引入。
另请参阅 openPersistentEditor () 和 closePersistentEditor ().
返回上方项为给定 item .
返回指针指向项在坐标 p 。坐标相对于树 Widget 的 viewport() .
另请参阅 visualItemRect ().
这是重载函数。
返回指针指向项在坐标 ( x , y )。坐标相对于树 Widget 的 viewport() .
返回下方可见项为给定 item .
返回指针指向 QTreeWidgetItem 关联给定 index .
另请参阅 indexFromItem ().
返回单元格显示 Widget 指定通过 item 和给定 column .
另请参阅 setItemWidget ().
[virtual protected]
QMimeData
*QTreeWidget::
mimeData
(const
QList
<
QTreeWidgetItem
*> &
项
) const
返回的对象包含序列化描述为指定 项 。用于描述项的格式获取自 mimeTypes () 函数。
若项列表为空,
nullptr
被返回而不是序列化空列表。
[virtual protected]
QStringList
QTreeWidget::
mimeTypes
() const
返回可用于描述 treewidget 项列表的 MIME 类型列表。
另请参阅 mimeData ().
打开持久编辑器为 item 以给定 column .
另请参阅 closePersistentEditor () 和 isPersistentEditorOpen ().
删除设置 Widget 在给定 item 以给定 column .
返回所有选定的非隐藏项的列表。
另请参阅 itemSelectionChanged ().
设置当前 item 在树 Widget。
除非选定模式为 NoSelection ,项还被选中。
另请参阅 currentItem () 和 currentItemChanged ().
设置当前 item 在树 Widget 和当前列到 column .
另请参阅 currentItem ().
设置当前 item 在树 Widget 和当前列到 column ,使用给定 命令 .
另请参阅 currentItem ().
设置 Header (头) item 为树小部件。头中每列的标签由项相应标签提供。
树 Widget 拥有项的所有权。
另请参阅 headerItem () 和 setHeaderLabels ().
如同 setHeaderLabels ( QStringList ( label )).
为每项添加 Header (头部) 列按 labels 列表, 并为每列设置标签。
注意:setHeaderLabels() 不会移除现有列。
另请参阅 setHeaderItem () 和 setHeaderLabel ().
设置给定 widget 以显示在指定单元格通过给定 item and column .
给定 widget 's autoFillBackground 特性必须被设为 true,否则 Widget 背景将透明,同时展示模型数据和树 Widget 项。
此函数只应该用于在树 Widget 项位置处显示静态内容。若想要显示自定义动态内容或实现自定义编辑器 Widget,使用 QTreeView 和子类 QStyledItemDelegate 代替。
不可以调用此函数在设置项层次结构之前,即 QTreeWidgetItem 将保持 widget 必须被添加到视图之后 widget 有设置。
注意: 树拥有 Widget 的所有权。
另请参阅 itemWidget () 和 委托类 .
[override virtual]
void
QTreeWidget::
setSelectionModel
(
QItemSelectionModel
*
selectionModel
)
重实现: QTreeView::setSelectionModel (QItemSelectionModel *selectionModel).
返回用于排序 Widget 内容的列。
另请参阅 sortItems ().
排序 Widget 项按指定 order 通过值在给定 column .
另请参阅 sortColumn ().
[virtual protected]
Qt::DropActions
QTreeWidget::
supportedDropActions
() const
返回由此视图所支持的掉落动作。
另请参阅 Qt::DropActions .
移除顶层项位于给定
index
在树中并返回它,否则返回
nullptr
;
另请参阅 insertTopLevelItem (), topLevelItem (),和 topLevelItemCount ().
返回顶层项位于给定
index
,或
nullptr
若项不存在。
另请参阅 topLevelItemCount () 和 insertTopLevelItem ().
返回项所占据的视口矩形为 item .
另请参阅 itemAt ().