C
TreeView QML 类型
提供树视图以显示来自 QAbstractItemModel 的数据。更多信息...
自 | Qt 5.15 |
继承 |
属性
- currentIndex : int
- currentItem : int
- currentModelIndex : int
- navigationMode : int
- styleHints : int
附加属性
- depth : int
- hasChildren : bool
- isExpanded : bool
- view : TreeView
方法
- collapse(row)
- collapseModelIndex(modelIndex)
- int columnAtX(x, includeSpacing)
- int depth(row)
- expand(row)
- expandModelIndex(modelIndex)
- bool hasChildren(row)
- bool hasSiblings(row)
- bool isExpanded(row)
- bool isModelIndexExpanded(modelIndex)
- Item itemAtCell(point cell)
- Item itemAtIndex(viewIndex)
- Item itemAtModelIndex(modelIndex)
- QModelIndex mapFromModel(modelIndex)
- QModelIndex mapToModel(viewIndex)
- int rowAtY(y, includeSpacing)
- toggleExpanded(row)
- toggleModelIndexExpanded(modelIndex)
- QModelIndex viewIndex(column, row)
详细描述
属性文档
currentIndex : int |
此属性包含已选为当前的视图索引。通过使用箭头键、用鼠标单击行(或单元格)或显式分配 currentIndex 值来选择要当前索引。
注意: currentIndex
是视图模型中的索引。在这个模型中,所有在视图中可见的树节点被平坦化成一个可以显示在表格列中的列表。这也意味着 currentIndex.row 是相对于根节点的表格行。要获取相对于父节点的模型中的当前索引,请使用 currentModelIndex 或 mapToModel()
var indexInModel = currentModelIndex var indexInModelMapped = mapToModel(currentIndex) console.assert(indexInModel == indexInModelMapped)
如果没有选择任何索引作为当前索引,或者 currentModelIndex 在视图中不可见,currentIndex.valid 将为 false
。
另请参阅 currentModelIndex、currentItem 以及 mapToModel()。
[只读] currentItem : int |
此属性保存当前选中的项目。通过使用箭头键、用鼠标点击行(或单元格)或显式为 currentIndex 分配一个值来选择当前项目。
注意:使用 currentItem 和调用 itemAtModelIndex(currentModelIndex)
几乎相同。唯一的区别在于后者仅在 currentModelIndex 改变时才会改变。但是,currentItem 还可能在视图中后台进行 relayout 后发生变化(这可能会强制委托项目重新加载或回收)。由于项目可能在应用程序背后的任何时候被回收或销毁,因此您不应存储此值。
如果 currentIndex.valid
为 false
,则此属性将为 null
。
另请参阅 itemAtCell()、currentIndex、currentModelIndex 和 itemAtModelIndex()。
currentModelIndex : int |
此属性保存选中的当前模型索引。通过使用箭头键、用鼠标点击行(或单元格)或显式为 currentIndex 分配一个值来选择当前索引。
注意: currentModelIndex
是模型内的索引。这也意味着 currentModelIndex.row 是相对于父节点的子项编号。要获取相对于根的当前行,请使用 currentIndex 或 mapFromModel()。
var indexInView = currentViewIndex var indexInViewMapped = mapFromModel(currentModelIndex) console.assert(indexInView == indexInViewMapped)
如果没有选择索引作为当前项,则 currentModelIndex.valid 将为 false
。
另请参阅 currentIndex、currentItem 和 mapFromModel()。
navigationMode : int |
此属性保存您希望用户如何浏览树的方式。它可以有以下值:
Constant | 描述 |
---|---|
TreeView.List | 树视图类似于列表视图。这意味着用户只能在上和下导航树,但不能在列中侧向导航。在此模式中,左右箭头键将折叠和展开树中的节点(除 Qt.Key_Space )。 |
TreeView.Table | 树视图类似于表格视图。这意味着用户可以在整个列中向上或向下、还可以向左或向右导航。在此模式中,左右箭头键将在左边和右边移动 currentIndex,而 Qt.Key_Space 只会切换节点的折叠或展开。 |
注意:选定的模式也可能影响委托如何对树进行样式设置。
styleHints : int |
此属性保存一组可以用来调整委托外观但不需创建自定义委托的提示。可以设置的提示如下:
Constant | 描述 |
---|---|
styleHints.indicator | 折叠/展开图标的颜色。 |
styleHints.indicatorCurrent | 当前行折叠/展开图标的颜色 |
styleHints.indicatorHovered | 鼠标悬停时折叠/展开图标的颜色 |
styleHints.overlay | currentIndex 所用叠加颜色的颜色 |
styleHints.overlayHovered | 鼠标悬停时 currentIndex 所用叠加颜色的颜色 |
styleHints.foregroundOdd | 奇数行的前景颜色 |
styleHints.backgroundOdd | 奇数行的背景颜色 |
styleHints.foregroundEven | 偶数行的前景颜色 |
styleHints.backgroundEven | 偶数行的背景颜色 |
styleHints.foregroundCurrent | 当前项(或如果 navigationMode 为 TreeView.List ,则整个行)的前景颜色 |
styleHints.backgroundCurrent | 当前项(或如果 navigationMode 为 TreeView.List ,则整个行)的背景颜色 |
styleHints.foregroundHovered | 鼠标悬停时当前项(或如果 navigationMode 为 TreeView.List ,则整个行)的前景颜色 |
styleHints.backgroundHovered | 鼠标悬停时当前项(或如果 navigationMode 为 TreeView.List ,则整个行)的背景颜色 |
styleHints.indent | 父节点和子节点之间的水平空间 |
styleHints.columnPadding | 单元格内容和内容之间的填充 |
styleHints.font | 代理中的文本项使用的字体 |
注意:代理可以自由地忽略应用程序指定的任何提示。
附加属性文档
TreeView.depth : int |
此附加属性保存代理实例的树深度(到根节点的父节点数量)。它附加到每个代理实例。
TreeView.hasChildren : bool |
此附加属性保存是否将代理实例显示为具有子级(由实例表示的模型索引在模型中具有子级)。它附加到每个代理实例。
TreeView.isExpanded : bool |
此附加属性保存是否将代理实例显示为展开(由实例表示的视图索引在视图模型中展开)。它附加到每个代理实例。
TreeView.view : TreeView |
此附加属性保存管理代理实例的视图。它附加到每个代理实例。
方法文档
折叠视图中所给的 row 处的树节点。
注意:此函数不会影响模型,只会影响视图中的视觉表示。
另请参阅 viewIndex、expand()、expandModelIndex()、collapseModelIndex() 和 isExpanded()。
展开指定索引的树节点。这是执行以下操作的一个便捷方式:
collapse(mapFromModel(modelIndex).row)
另请参阅 viewIndex、collapse()、expand()、expandModelIndex() 和 isExpanded()。
int columnAtX(x, includeSpacing) |
返回视图坐标下 x 位置的列。
如果 includeSpacing 设置为 false
,并且 x 在列间距之上,则返回值将是 -1。否则,如果 x 在列间距之上且 includeSpacing 设置为 true
,则返回最接近该位置的列。
展开视图中的指定 row 的树节点。
注意:此函数不会影响模型,只会影响视图中的视觉表示。
另请参阅 viewIndex、collapse()、expandModelIndex()、collapseModelIndex() 和 isExpanded()。
展开指定索引的树节点。这是执行以下操作的一个便捷方式:
expand(mapFromModel(modelIndex).row)
另请参阅 viewIndex、collapse()、expand()、collapseModelIndex() 和 isExpanded()。
bool isModelIndexExpanded(modelIndex) |
如果给定的 modelIndex 在视图中显示为展开,则返回 true
。这是执行以下操作的一个便捷方式:
isExpanded(mapFromModel(modelIndex).row)
另请参阅 viewIndex。
返回给定表 cell 内部的项目。如果单元格在视图中不可见,则返回 null
。
另请参阅 currentItem 和 itemAtIndex()。
Item itemAtIndex(viewIndex) |
返回指定视图索引 viewIndex 的项目。如果 viewIndex.valid
为 false
,则返回 null
。
另请参阅 currentItem、itemAtCell()、viewIndex() 和 itemAtModelIndex()。
Item itemAtModelIndex(modelIndex) |
返回给定模型索引 modelIndex 的项。如果表示模型索引的项在视图中不可见,则返回 null
。方便进行
itemAtIndex(mapFromModel(modelIndex))
将指向模型中项的索引 modelIndex 转换为视图中的对应模型索引(视图模型)。
TreeView 内部使用视图模型将树模型转换为适合在 TableView 中显示的模型。此视图模型将任何时刻在视图中可见的树模型部分展平到列表中。根据您要做什么,与模型索引一起工作有时比与视图索引一起工作更容易,反之亦然。
另请参阅 mapToModel()。
将 viewIndex(指向视图(视图模型)中项的索引)映射到模型中的相应模型索引。
TreeView 内部使用视图模型将树模型转换为适合在 TableView 中显示的模型。此视图模型将任何时刻在视图中可见的树模型部分展平到列表中。根据您要做什么,与模型索引一起工作有时比与视图索引一起工作更容易,反之亦然。
另请参阅 mapFromModel()。
int rowAtY(y, includeSpacing) |
返回在视图中坐标位置 y 处的行。
如果 includeSpacing 设置为 false
,并且 y 在行之间的间隔上,则返回 -1。否则,如果 y 在间隔上并且 includeSpacing 设置为 true
,则返回距离位置最近的行。
切换给定 row 处的树节点是否应该展开。这是一种便于进行的操作
if (isExpanded(row)) collapse(row) else expand(row)
切换给定 modelIndex 处的树节点是否应该展开。这是一种便于进行的操作
if (isModelIndexExpanded(modelIndex)) collapseModelIndex(modelIndex) else expandModelIndex(modelIndex)
从给定的 row 和 column 创建视图模型中的模型索引。
注意: 此索引仅适用于视图中使用。要创建用于模型的模型索引,请参阅 QAbstractItemModel 的文档。
在特定的 Qt 许可证下可用。
了解更多信息。