我正在尝试突出显示ListView中当前选定的项目.下面是我正在使用的代码; 由于某种原因,虽然类似的代码在这个应用程序的另一个ListView中完美地工作,但是这里的SelectedRectangle项永远不会显示,尽管所选的项在它应该的时候会改变.
Rectangle {
id: deviceTree
width: (window.width * 2) / 3
height: 400
border {
width: 2
color: "black"
}
ListView {
id: deviceTreeView
model: deviceTreeModel
delegate: deviceTreeDelegate
highlight: SelectionRectangle {}
anchors.fill: parent
anchors.margins: 6
}
Component {
id: deviceTreeDelegate
Rectangle {
border.color: "#CCCCCC"
width: deviceTree.width
height: 30
smooth: true
radius: 2
MouseArea {
anchors.fill: parent
onClicked: { deviceTreeView.currentIndex = index; window.selectedDeviceChanged(deviceName) }
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
SelectedRectangle.qml
Rectangle
{
id: selectionRectangle
color: "lightsteelblue"
smooth: true
radius: 5
}
Run Code Online (Sandbox Code Playgroud)
解决方案:deviceTreeDelegate中的矩形默认为白色并与选择矩形重叠.使用属性将其设置为trasparent,以便可以看到选择.
您的代码有两个错误:
highlight: SelectionRectangle {}在主 QML 文件中写入最后,您应该为突出显示组件编写如下内容:
highlight: Component {
SelectedRectangle {}
}
Run Code Online (Sandbox Code Playgroud)