QtQuick QML 如何在悬停时突出显示 ListView 中的项目?
QtQuick QML How to highlight item in ListView on hover?
我有以下 QML:
menuBar: MenuBar {...}
header: ToolBar {...}
SplitView {
id: splitView
...
Item {
SplitView.preferredWidth: parent.width / 2
Component {
id: modDelegate
GridLayout {
id: modGrid; columns: 2; columnSpacing: 30
MouseArea {
z: 0; anchors.fill: parent; hoverEnabled: true
onEntered: ???; onExited: ???
}
CheckBox {}
ColumnLayout {
Layout.topMargin: 5
Text {...}; Text {...}; Text {...}; Text {...}
}
}
}
ListView {
id: modList; anchors.fill: parent; model: ModModel {}; delegate: modDelegate; focus: true
}
Layout.fillHeight: true
}
Item {
SplitView.preferredWidth: parent.width / 2
...
}
}
我希望当我将鼠标悬停在该 ListView 的某个项目上时,该项目在视觉上突出显示(当然不会阻止我单击其中的复选框)。
我在另一个不相关问题的答案中找到了解决这个问题的方法。
我在文档中的任何地方都没有看到任何提到我可以通过在委托内部使用 index
来获取我所在的 item/delegate 的索引。
所以我只是将 modDelegate
中的所有内容都包装到 Item
中,并将 MouseArea
的 onEntered
属性 设置为 modList.currentIndex = index
我有以下 QML:
menuBar: MenuBar {...}
header: ToolBar {...}
SplitView {
id: splitView
...
Item {
SplitView.preferredWidth: parent.width / 2
Component {
id: modDelegate
GridLayout {
id: modGrid; columns: 2; columnSpacing: 30
MouseArea {
z: 0; anchors.fill: parent; hoverEnabled: true
onEntered: ???; onExited: ???
}
CheckBox {}
ColumnLayout {
Layout.topMargin: 5
Text {...}; Text {...}; Text {...}; Text {...}
}
}
}
ListView {
id: modList; anchors.fill: parent; model: ModModel {}; delegate: modDelegate; focus: true
}
Layout.fillHeight: true
}
Item {
SplitView.preferredWidth: parent.width / 2
...
}
}
我希望当我将鼠标悬停在该 ListView 的某个项目上时,该项目在视觉上突出显示(当然不会阻止我单击其中的复选框)。
我在另一个不相关问题的答案中找到了解决这个问题的方法。
我在文档中的任何地方都没有看到任何提到我可以通过在委托内部使用 index
来获取我所在的 item/delegate 的索引。
所以我只是将 modDelegate
中的所有内容都包装到 Item
中,并将 MouseArea
的 onEntered
属性 设置为 modList.currentIndex = index