我正在创建一个媒体播放器系统,其中使用网格视图列出一些歌曲。在我们的应用程序中,我们可以从列表中拖动一首歌曲并将其放在指定区域。这些所有功能都已实施。但问题是在拖动时,项目被拖到网格视图中的其他项目后面。 (即,如果列出3首歌曲,则第一首歌曲落后于其他两首歌曲。第二首歌曲落后于第三首歌曲,但在第一首歌曲之前)。
尝试将网格项目拖放到前面时。 对此有什么解决方案吗?
答案 0 :(得分:1)
您可以创建一个专用的拖动图标项,而不是拖动原始对象,并将其设置为网格视图顶部的不可见项,这样它就会位于网格视图顶部的每个元素之上。网格。拖动开始时创建项目,拖动结束时将其销毁。
答案 1 :(得分:0)
如@derM所述,您可以使用GridItem的z索引。以下示例代码可以帮助您:
注意:与您的问题有关的部分是GridItem中onPressed
事件MouseArea
内的代码。
Rectangle{
width: 1280
height: 800
GridView{
Rectangle{ anchors.fill: parent; color: 'blue'; opacity: 0.2; }
id: musicBox
width: 500; height: 500
model: 10
anchors.centerIn: parent
delegate: Rectangle{
id: songItem
border{ width: 2; color: 'blue'}
width: 100; height: 100
color: (musicBox.currentIndex == index) ? 'yellow' : 'red'
Text{
anchors.centerIn: parent
text: index
font.pixelSize: 20
}
MouseArea{
anchors.fill: songItem
drag{
minimumX: 0
minimumY: 0
maximumX: musicBox.width
maximumY: musicBox.height
axis: Drag.XandYAxis
target: songItem
}
onPressed:{
for(var i = 0; i < musicBox.count; i++){ musicBox.currentIndex = i; musicBox.currentItem.z = i; }
musicBox.currentIndex = index
musicBox.currentItem.z = musicBox.count
}
}
}
}
}