QML - TableView - 访问 headerDelegate 内的 TableViewColumn 属性
Posted
技术标签:
【中文标题】QML - TableView - 访问 headerDelegate 内的 TableViewColumn 属性【英文标题】:QML - TableView - Access TableViewColumn property inside headerDelegate 【发布时间】:2019-06-26 13:59:49 【问题描述】:我在TableView
中有自定义headerDelegate
。我需要访问TableViewColumn
的属性,例如headerDelegate
中的resizable
属性。
有什么方法可以访问headerDelegate
中的这个属性吗?
是否可以访问TableViewColumn
内部headerDelegate
中的用户定义属性?
例如,我可以在TableViewColumn
内部创建一个名为enableSorting
的用户定义属性并在headerDelegate
内部访问它以隐藏或显示sortingIndicator
?
更新
TableView
TableViewColumn
property bool sortingEnabled: false
resizable: false
headerDelegate: Rectangle
color: styleData.resizable?"red":"blue"
border.color:styleData.sortingEnabled?"red":"blue"
这里的styleData.resizable
和styleData.sortingEnabled
是虚构的。我想得到类似的东西。
【问题讨论】:
请添加minimal reproducible example 我添加了一个最小的例子。但它是不可重现的。 我找到了答案。这对我来说非常有用。 【参考方案1】:你想要的是设置 TableView id 属性。您将能够以您想要的所有方式从整个文件范围访问它。
TableView
id: myTableView
headerDelegate: Rectangle
color: myTableView.whatever // Change whatever by any property of myTableView
重要提示:设置委托 id 并以其他方式访问将不起作用,因为它没有在 qml 解释器的读取时被实例化,而且它可能会针对委托项目的多个实例。
【讨论】:
【参考方案2】:从TableView
的文档中,访问我们可以使用的列
getColumn(index)
方法
TableView
TableViewColumn
property bool sortingEnabled: false
resizable: false
headerDelegate: Rectangle
color: getColumn(styleData.column).resizable?"red":"blue"
border.color:getColumn(styleData.column).sortingEnabled?"red":"blue"
【讨论】:
以上是关于QML - TableView - 访问 headerDelegate 内的 TableViewColumn 属性的主要内容,如果未能解决你的问题,请参考以下文章
QML TableView + QAbstractTableModel - 如何从 QML 编辑模型数据?