【问题标题】:QML TreeView itemDelegate not indicating isSelectedQML TreeView itemDelegate 不指示 isSelected
【发布时间】:2021-04-18 23:37:12
【问题描述】:

我在 QML 中创建了一个简单的 TreeView,其中包含多个嵌套级别。我还创建了一个“itemDelegate”和一个“rowDelegate”;两者都在绑定到各自 isSelected 的红色/黑色之间切换背景颜色。

当我点击一个项目时,ROW 颜色会发生变化,但项目不会。我确认每个项目的 itemFlag 包括 ItemsIsSelectable 和 ItemIsEnabled(默认)。

我的 itemDelegate 包含:

  Rectangle {
                color: styleData.isSelected ? "red" : "black"

我在树视图中添加了一个选择:

  ItemSelectionModel {
       id: treeViewSelectionModel
       objectName: "treeViewSelectionModel"
       model: treemodel
       onCurrentChanged:{console.log("Selection - current changed from ",previous, " to ", current)}
   }

正确打印出新的/以前的选择。所以看起来该项目正在被选中,但没有改变颜色。谁能解释一下原因?

【问题讨论】:

  • 从您发布的 Rectangle 中无法判断,但您是否设置了它的大小/锚点?
  • 根据documentation你应该使用styleData.selected而不是styleData.isSelected
  • @Maxim - 就是这样!似乎 QML 与 styleData 的命名方法不一致。

标签: qml treeview selected


【解决方案1】:

QQC1 不一致,所以 item 使用 styleData.selected 而 row 使用 styleData.isSelected

(正如 Maxim 所指出的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    相关资源
    最近更新 更多