QML事件处理之拖放事件(DragEvent)
·
拖放事件


Rectangle {
id: container
width: 600; height: 200
Rectangle {
id: rect
width: 50; height: 50
color: " red"
opacity: (600.0 - rect.x) / 600
MouseArea {
anchors.fill: parent
drag.target: rect
drag.axis: Drag.XAxis
drag.minimumX: 0
drag.maximumX: container.width - rect.width
}
}
}
要实现更复杂的拖放操作,比如想获取拖动项目的相关信息,那么就要使用DragEvent 拖放事件了。在DragEvent 中可以通过x和y属性获取拖动的位置;使用keys属性获取可以识别数据类型或源的键列表;通过hasColor、hasHtml、hasText和hasUrls属性来确定具体的拖动类型;具体的类型数据可以使用colorData、html、text和urls属性获得;formats属性可以获取拖动数据中包含的MIME类型格式的列表;可以使用drag.source来获取拖动事件的源。其实,在实际编程中启动拖动并不是直接操作DragEvent,而是使用Drag附加属性和DropArea。任何项目都可以使用Drag来实现拖放。当一个项目的Drag附加属性的active属性设置为true时,该项目的任何位置变化都会产生一个拖动事件,并
发送给与项目新位置相交的DropArea。其他实现了拖放事件处理器的项目也可以接收这些事件。Drag附加属性的内容如表5-5所列。DropArea是一个不可见的项目。当其他项目拖动到其上时,它可以接收相关的事件。可以通过drag.x和drag.y获取最后一个拖放事件的坐标;使用drag.source获取
拖放的源对象;通过keys获取拖放的键列表。当DropArea范围内有拖放进入时,会调用onEntered(DragEvent drag)处理器;当有drop事件发生时,会调用onDropped(DragEvent drop)处理器;当拖放离开时,会调用onExited()处理器;当拖放位置改变时,会调用onPositionChanged(DragEvent drag)处理器。

更多推荐



所有评论(0)