【问题标题】:QML - TableView - Access TableViewColumn property inside headerDelegateQML - TableView - 访问 headerDelegate 内的 TableViewColumn 属性
【发布时间】: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.resizablestyleData.sortingEnabled 是虚构的。我想得到类似的东西。

【问题讨论】:

  • 我添加了一个最小的例子。但它是不可重现的。
  • 我找到了答案。这对我来说非常有用。

标签: qt qml tableview


【解决方案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"
    
     }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      相关资源
      最近更新 更多