class QTreeView#

QTreeView 类提供了一个树形视图的默认模型/视图实现。更多信息...

Inheritance diagram of PySide6.QtWidgets.QTreeView

继承自: QTreeWidget, QHelpContentWidget

简述#

属性#

  • allColumnsShowFocus - 是否使用所有列显示项目键盘焦点

  • animated - 是否启用动画

  • autoExpandDelay - 拖放操作期间在树中打开项目之前的延迟时间

  • expandsOnDoubleClick - 是否可以通过双击来展开项目

  • headerHidden - 是否显示或隐藏头

  • indentation - 树视图中项目的缩进

  • itemsExpandable - 是否允许用户展开项目

  • rootIsDecorated - 是否显示对顶级项目进行展开和折叠的控制

  • sortingEnabled - 是否启用排序

  • uniformRowHeights - 树视图中所有项目是否具有相同的高度

  • wordWrap - 项目文本换行策略

方法#

虚方法#

槽函数#

信号#

本文档可能包含从C++自动翻译成Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译问题,您还可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单来通知我们。

详细描述#

警告

本节包含自动从C++翻译成Python的代码片段,可能包含错误。

../../_images/windows-treeview.png

QTreeView实现了一个模型的项的树形表示。此类用于提供由QListView类以前提供的标准层次列表,但使用Qt的模型/视图架构提供的更灵活的方法。

QTreeView类是模型/视图类之一,也是Qt的模型/视图框架的一部分。

QTreeView实现了由QAbstractItemView类定义的接口,以便它可以显示由从QAbstractItemModel类派生的模型提供的数据。

构建显示模型数据的树形视图非常简单。在下面的示例中,目录的内容由QFileSystemModel提供,并以树的形式显示。

    model = QFileSystemModel()
    model.setRootPath(QDir.currentPath())
if __name__ == "__main__":

    app = QApplication([])
    splitter = QSplitter()
tree.setModel(model)

模型/视图架构确保树形视图的内容在模型更改时更新。

具有子项的项可以是展开的(子项可见)或折叠的(子项隐藏)的状态。当此状态更改时,将发出collapsed()expanded()信号,并使用相关项的模型索引。

用于表示层次级别的缩进量由indentation属性控制。

树视图中的标题使用 QHeaderView 类构建,可以使用 header()->hide() 方法隐藏。请注意,每个标题都配置了其 stretchLastSection 属性设置为 true,确保视图不浪费分配给它的任何空间用于其标题。如果此值设置为 true,则此属性将覆盖设置在标题最后一个部分上的调整大小模式。

默认情况下,树视图中的所有列都可移动,除了第一列。要禁用这些列的移动,请使用 QHeaderViewsetSectionsMovable() 函数。有关重新排列部分的更多信息,请参阅 移动标题部分

键盘快捷键#

QTreeView 支持一系列键绑定,使用户能够导航视图并交互项的内容

按键

动作

向上键

将光标移动到上一行同一列的项。如果当前项的父项没有更多的行可以导航,则光标移动到父项之前兄弟的最后一行的相关项。

向下键

将光标移动到下一行同一列的项。如果当前项的父项没有更多的行可以导航,则光标移动到父项之后兄弟的第一行的相关项。

向左键

通过折叠分支来隐藏当前项的子项(如果有的话)。

减号键

与向左键相同。

向右键

通过展开分支来显示当前项的子项(如果有的话)。

加号键

与向右键相同。

星号键

展开当前项及其所有子项(如果有的话)。

PageUp键

将光标向上移动一页。

PageDown键

将光标向下移动一页。

Home键

将光标移动到模型中第一个顶级项第一行的同一列的项。

End键

将光标移动到模型中最后一个顶级项最后一行的同一列的项。

F2键

在可编辑的模型中,此键用于打开当前项进行编辑。可以使用 Esc 键取消编辑过程并撤销对显示的数据所做的任何更改。

提高性能#

可以向视图提供有关处理的数据提示,以提高处理大量项时的显示性能。对于打算显示等高项的视图,可以将 uniformRowHeights 属性设置为 true 的一种方法。

当使用from __feature__ import true_property时,可以直接使用属性,否则通过访问器函数。

属性allColumnsShowFocus: bool#

此属性决定了是否应使用所有列显示键盘焦点。

如果此属性值为true,所有列将显示焦点,否则只有一列将显示焦点。

默认值为false。

访问函数
属性animated: bool#

此属性决定了是否启用动画。

如果此属性值为true,树视图将在展开和折叠分支时进行动画处理。如果此属性值为false,则树视图将立即展开或折叠分支,而不显示动画。

默认情况下,此属性值为false

访问函数
属性autoExpandDelay: int#

此属性保存了在拖放操作期间打开树中的项目之前的延迟时间。

此属性保存用户在节点上等待的时间(以毫秒为单位),在该时间后节点将自动打开或关闭。如果时间设置为小于0,则不会激活。

默认情况下,此属性值为-1,表示禁用自动展开。

访问函数
属性expandsOnDoubleClick: bool#

此属性决定了是否可以通过双击来展开项目。

此属性决定了用户是否可以通过双击来展开和折叠项目。默认值为true。

另请参阅

itemsExpandable

访问函数
属性headerHidden: bool#

此属性决定了是否显示标题。

如果此属性值为true,则不显示标题,否则显示。默认值为false。

另请参阅

header()

访问函数
属性 缩进: int#

此属性保存树视图中项目的缩进。

此属性保存树视图中每个级别的项目的像素缩进量。对于顶级项目,缩进指定第一列项目的视口边缘到项目的水平距离;对于子项目,它指定它们从父项目缩进的距离。

默认情况下,此属性值取决于样式。因此,当样式更改时,此属性会更新。调用setIndentation()停止更新,调用resetIndentation()将恢复默认行为。

访问函数
属性 itemsExpandable: bool#

此属性保存用户是否可以扩展和折叠项目。

此属性保存用户是否可以交互式地展开和折叠项目。

默认情况下,此属性为 true

访问函数
属性 rootIsDecorated: bool#

此属性保存是否显示展开和折叠顶级项目的控件。

具有子项的项目通常是带控件的,可以展开和折叠它们,允许其子项显示或隐藏。如果此属性为false,则不会为顶级项目显示这些控件。这可以用作使单级树结构看起来像简单的项目列表。

默认情况下,此属性为 true

访问函数
属性 sortingEnabled: bool#

此属性保存是否启用排序。

如果此属性为 true,则对树启用排序;如果属性为false,则不启用排序。默认值是false。

为了避免性能问题,建议在将项目插入树中之后启用排序。或者,您也可以在将项目插入树之前将项目插入列表。

另请参阅

sortByColumn()

访问函数
属性 uniformRowHeights: bool#

此属性保存树视图中所有项目是否具有相同的高度。

如果可以保证视图中所有项目高度相同,则应将此属性设置为true。这可以启用视图进行一些优化。

高度来自视图中的第一个条目。当该条目的数据更改时,它将更新。

如果编辑器大小提示大于单元格大小提示,则使用编辑器的大小提示。

默认情况下,此属性值为false

访问函数
属性 wordWrapᅟ: bool#

此属性持有项目文本换行策略。

如果此属性为 true,则项目文本在需要的地方根据单词断点进行换行;否则,将不会进行换行。默认情况下,此属性为 false

注意,即使启用了换行,单元格也不会扩展以适应所有文本。将根据当前的 textElideMode 插入省略号。

访问函数
__init__([parent=None])#
参数:

parentQWidget

使用父类 parent 构建一个树视图以表示模型的数据。请使用 setModel() 来设置模型。

另请参阅

QAbstractItemModel

allColumnsShowFocus()#
返回类型:

bool

获取属性 allColumnsShowFocusᅟ 的值。

autoExpandDelay()#
返回类型:

int

另请参阅

setAutoExpandDelay()

获取属性 autoExpandDelayᅟ 的值。

collapse(index)#
参数:

indexQModelIndex

将指定索引的模型项折叠。

另请参阅

collapsed()

collapseAll()#

折叠所有展开的项目。

collapsed(index)#
参数:

indexQModelIndex

当索引指定的项目被折叠时,会发出此信号。

columnAt(x)#
参数:

x – int

返回类型:

int

返回头覆盖给定坐标 x 的树视图中对应的列。

columnCountChanged(oldCount, newCount)#
参数:
  • oldCount – int

  • newCount – int

通知树视图中列的数量从 oldCount 变更到 newCount

columnMoved()#

每当列被移动时都会调用此槽。

columnResized(column, oldSize, newSize)#
参数:
  • column – int

  • oldSize – int

  • newSize – int

column 的尺寸在标题中改变时,会调用此函数。参数 oldSizenewSize 分别表示像素单位下的旧尺寸和新尺寸。

另请参阅

setColumnWidth()

columnViewportPosition(column)#
参数:

column – int

返回类型:

int

返回 column 在视口中的水平位置。

columnWidth(column)#
参数:

column – int

返回类型:

int

返回 column 的宽度。

drawBranches(painter, rect, index)#
参数:

使用给定的 painter 绘制与模型项 index 相同行的树视图中的分支。分支将绘制在由 rect 指定的矩形内。

drawRow(painter, options, index)#
参数:

使用给定的 painter 绘制包含模型项 index 的树视图中的一行,通过 option 控制该项的显示方式。

drawTree(painter, region)#
参数:

使用指定的 painter 绘制与给定的 region 交叉的树的部分。

另请参阅

paintEvent()

expand(index)#
参数:

indexQModelIndex

展开由 index 指定的模型项。

另请参阅

expanded()

expandAll()#

展开所有可展开的项。

此函数将不会尝试获取更多数据。

警告

如果模型包含大量项,则此函数将执行一段时间。

expandRecursively(index[, depth=-1])#
参数:

展开给定 index 处的项及其所有子项到指定的 depthdepth 是相对于给定 index 的。 depth 为 -1 将展开所有子项,depth 为 0 则仅展开给定的 index

此函数将不会尝试获取更多数据。

警告

如果模型包含大量项,则此函数将执行一段时间。

另请参阅

expandAll()

expandToDepth(depth)#
参数:

depth – int

将所有可展开的项目展开到给定的 深度

此函数将不会尝试获取更多数据。

expanded(index)#
参数:

indexQModelIndex

当由 index 指定的项目展开时,会发出此信号。

另请参阅

setExpanded()

expandsOnDoubleClick()#
返回类型:

bool

属性 expandsOnDoubleClick 的获取器。

header()#
返回类型:

QHeaderView

返回树视图的头部。

另请参阅

setHeader() headerData()

hideColumn(column)#
参数:

column – int

隐藏给定的

此函数应在模型初始化后调用,因为视图需要知道列数,以便隐藏

indentation()#
返回类型:

int

另请参阅

setIndentation()

属性 indentation 的获取器。

indexAbove(index)#
参数:

indexQModelIndex

返回类型:

QModelIndex

返回 index 上方的项目模型索引。

indexBelow(index)#
参数:

indexQModelIndex

返回类型:

QModelIndex

返回位于 index 下的项的模型索引。

indexRowSizeHint(index)#
参数:

indexQModelIndex

返回类型:

int

返回由 index 指示的行的尺寸提示。

另请参阅

sizeHintForColumn() uniformRowHeights()

isAnimated()#
返回类型:

bool

属性 animatedᅟ 的获取器。

isColumnHidden(column)#
参数:

column – int

返回类型:

bool

如果 column 被隐藏,则返回 true;否则返回 false

isExpanded(index)#
参数:

indexQModelIndex

返回类型:

bool

如果模型项 index 被展开,则返回 true;否则返回 false。

isFirstColumnSpanned(row, parent)#
参数:
返回类型:

bool

如果给定 parentrow 中的第一列的项跨越所有列,则返回 true;否则返回 false

isHeaderHidden()#
返回类型:

bool

属性 headerHiddenᅟ 的获取器。

isRowHidden(row, parent)#
参数:
返回类型:

bool

如果给定 parentrow 项处于隐藏状态,则返回 true;否则返回 false

isSortingEnabled()#
返回类型:

bool

属性 sortingEnabled 的获取器。

itemsExpandable()#
返回类型:

bool

另请参阅

setItemsExpandable()

属性 itemsExpandable 的获取器。

reexpand()#
resetIndentation()#

属性 indentation 的重置函数。

resizeColumnToContents(column)#
参数:

column – int

将给定的 column 调整到其内容大小。

另请参阅

columnWidth() setColumnWidth() sizeHintForColumn() resizeContentsPrecision()

rootIsDecorated()#
返回类型:

bool

另请参阅

setRootIsDecorated()

属性 rootIsDecorated 的获取器。

rowHeight(index)#
参数:

indexQModelIndex

返回类型:

int

返回由给定 index 指示的行的长度。

另请参阅

indexRowSizeHint()

rowsRemoved(parent, first, last)#
参数:

通知视图,从 start 行到 end 行(包含)已从指定的 parent 模型项中删除。

setAllColumnsShowFocus(enable)#
参数:

enable – bool

另请参阅

allColumnsShowFocus()

属性 allColumnsShowFocusᅟ 的设置器。

setAnimated(enable)#
参数:

enable – bool

另请参阅

isAnimated()

属性 animatedᅟ 的设置器。

setAutoExpandDelay(delay)#
参数:

delay – int

另请参阅

autoExpandDelay()

属性 autoExpandDelayᅟ 的设置器。

setColumnHidden(column, hide)#
参数:
  • column – int

  • hide – bool

如果 hide 为 true,则隐藏 column,否则显示 column

setColumnWidth(column, width)#
参数:
  • column – int

  • width – int

将指定 column 的宽度设置为指定的 width

setExpanded(index, expand)#
参数:

根据 expanded 的值将 index 指示的项目设置为折叠或展开。

setExpandsOnDoubleClick(enable)#
参数:

enable – bool

另请参阅

expandsOnDoubleClick()

属性 expandsOnDoubleClick 的设置器。

setFirstColumnSpanned(row, parent, span)#
参数:

如果 span 为真,则给定 parentrow 中的第一列的项目设置为跨所有列,否则该行的所有项目都会显示。

另请参阅

isFirstColumnSpanned()

setHeader(header)#
参数:

headerQHeaderView

将树视图的标题设置为给定的 header

视图将获取给定 header 的所有权,并在设置新标题时删除它。

另请参阅

headerData()

setHeaderHidden(hide)#
参数:

hide – bool

另请参阅

isHeaderHidden()

属性 headerHidden 的设置器。

setIndentation(i)#
参数:

i – int

另请参阅

indentation()

属性 indentation 的设置器。

setItemsExpandable(enable)#
参数:

enable – bool

另请参阅

itemsExpandable()

属性 itemsExpandable 的设置器。

setRootIsDecorated(show)#
参数:

show – bool

另请参阅

rootIsDecorated()

属性 rootIsDecorated 的设置器。

setRowHidden(row, parent, hide)#
参数:

如果 hide 为 true,则隐藏具有给定 parentrow;否则显示该 row

setSortingEnabled(enable)#
参数:

enable – bool

另请参阅

isSortingEnabled()

属性 sortingEnabled 的设置器。

setTreePosition(logicalIndex)#
参数:

logicalIndex – int

指定树结构应放置在逻辑索引 index 位置。如果设置为 -1,则树始终跟随视觉索引 0。

setUniformRowHeights(uniform)#
参数:

uniform – bool

另请参阅

uniformRowHeights()

属性 uniformRowHeights 的设置器。

setWordWrap(on)#
参数:

on – bool

另请参阅

wordWrap()

属性 wordWrap 的设置器。

showColumn(column)#
参数:

column – int

在树视图中显示给定的 column

sortByColumn(column, order)#
参数:

根据给定的 columnorder 对模型进行排序。

column 可能是 -1,在这种情况下,将不会显示排序指示器,并且模型将返回到其自然、未排序的顺序。请注意,并非所有模型都支持此功能,并且在这种情况下甚至可能会崩溃。

另请参阅

sortingEnabled

treePosition()#
返回类型:

int

返回树设置的逻辑索引。如果返回值为 -1,则树放置在视觉索引 0。

另请参阅

setTreePosition()

uniformRowHeights()#
返回类型:

bool

另请参阅

setUniformRowHeights()

属性 uniformRowHeights 的获取器。

wordWrap()#
返回类型:

bool

另请参阅

setWordWrap()

属性 wordWrap 的获取器。