QML ListVIew 项目位置
QML ListVIew Item Pos
ListView有20个item,鼠标点击得到第十个item X pos.
但是 positionViewAtIndex 函数也会移动项目。
有没有办法在没有 positionViewAtIndex 的情况下获取项目 X pos?
这是示例。
Window {
id: frame
width: 640
height: 480
visible: true
MouseArea{
anchors.fill: parent
onClicked: {
listView.positionViewAtIndex(10, ListView.SnapPosition);
var destPos = listView.contentX;
console.log("item10 x: " + destPos)
}
}
Rectangle {
width: 480
height: 80
color: "white"
ListView {
id:listView
anchors.fill: parent
anchors.margins: 20
clip: true
model: 20
orientation: ListView.Horizontal
delegate:
Rectangle {
width: 40
height: 40
color: "green"
Text {
anchors.centerIn: parent
text: index
}
}
spacing: 5
}
}
}
使用这种方式获取位置,但如果想要中心位置,则需要更多计算。
MouseArea{
anchors.fill: parent
onClicked: {
var destPos = listView.itemAtIndex(10).x
console.log("item10 x: " + destPos)
listView.contentX = destPos
}
}
ListView有20个item,鼠标点击得到第十个item X pos.
但是 positionViewAtIndex 函数也会移动项目。
有没有办法在没有 positionViewAtIndex 的情况下获取项目 X pos?
这是示例。
Window {
id: frame
width: 640
height: 480
visible: true
MouseArea{
anchors.fill: parent
onClicked: {
listView.positionViewAtIndex(10, ListView.SnapPosition);
var destPos = listView.contentX;
console.log("item10 x: " + destPos)
}
}
Rectangle {
width: 480
height: 80
color: "white"
ListView {
id:listView
anchors.fill: parent
anchors.margins: 20
clip: true
model: 20
orientation: ListView.Horizontal
delegate:
Rectangle {
width: 40
height: 40
color: "green"
Text {
anchors.centerIn: parent
text: index
}
}
spacing: 5
}
}
}
使用这种方式获取位置,但如果想要中心位置,则需要更多计算。
MouseArea{
anchors.fill: parent
onClicked: {
var destPos = listView.itemAtIndex(10).x
console.log("item10 x: " + destPos)
listView.contentX = destPos
}
}