QML类型说明-Drag

来源:互联网 发布:php五种设计模式 编辑:程序博客网 时间:2024/06/06 21:07

Drag

ImportStatement:   import QtQuick 2.2

 

AttachedProperties

active :bool

dragType :enumeration

hotSpot :QPointF

keys :stringlist

mimeData :stringlist

proposedAction: enumeration

source :Object

supportedActions: flags

target :Object

 

AttachedSignals

dragFinished(DropActionaction)

dragStarted()

 

AttachedMethods

void cancel()

enumerationdrop()

voidstart(flags supportedActions)

voidstartDrag(flags supportedActions)

 

DetailedDescription

在任何组件上使用Drag的附加属性能创建一个拖动源和在场景中触发放置事件。

当组件实例的拖被激活,则在它所在的位置将生成拖事件,该事件将发送到DropArea。DropArea是和组件实例的新位置交叉的所有DropArea。同时,其他实现了拖放处理的组件,也能接收这些事件。

下面的代码片断展示了如何使用鼠标来拖动组件实例。拖动不局限于鼠标,任何能移动组件实例的动作都能触发拖时间。它包含但不限于触摸事件,动画和绑定。

importQtQuick 2.0

 

Item {

    width: 200; height: 200

 

    DropArea {

        x: 75; y: 75

        width: 50; height: 50

 

        Rectangle {

            anchors.fill: parent

            color: "green"

 

            visible: parent.containsDrag

        }

    }

 

    Rectangle {

        x: 10; y: 10

        width: 20; height: 20

        color: "red"

 

        Drag.active: dragArea.drag.active

        Drag.hotSpot.x: 10

        Drag.hotSpot.y: 10

 

        MouseArea {

            id: dragArea

            anchors.fill: parent

 

            drag.target: parent

        }

    }

}

一个拖动能通过调用Drag.cancel()或设置Drag.active为假来中止。它也能被调用Drag.drop()产生的放置事件中止。如果放置事件被接受,Drag.drop()返回放置事件接受者的放置行为选择,否则返回Qt.IgnoreAction。

 

AttachedProperty Documentation

.active :bool

拖动事件序列是否是活动的。绑定这个属性到MouseArea::drag的active属性将在用户开始拖动时触发拖动。设置这个属性为真也发送QDragEnter事件到场景,事件携带组件实例的当前位置。设置它为假将发送QDragLeave事件。当拖动被激活,组件实例的任何位置变化,用QDragMove事件发送,QDragMove事件携带组件实例的新位置。

 

.dragType :enumeration

是否自动来时拖动或向后兼容内部拖动。默认为向后兼容内部拖动。拖动能用startDrag手动开始。它是下面的值之一:

Drag.None -不自动开始。

Drag.Automatic- 自动开始

Drag.Internal(default) -自动开始向后兼容拖动。

当使用Drag.Automatic时,我们必须定义mimeData和绑定active属性到MouseArea.drag的active属性。QML的属性在Qt5.2中介绍。

 

.hotSpot :QPointF

保存相对于组件实例左上角的相对拖动位置。默认为(0.0)。改变热点将触发新的更新位置的拖动。

 

.keys :stringlist

DropArea过滤拖动时间的关键字列表。在拖动激活后改变关键字,将触发拖动离开事件,然后触发新源的拖动进入事件,以此来复位拖动事件序列。

 

.mimeData :stringlist

拖动期间mimeData的映射。这个QML属性在Qt 5.2中被介绍。

 

.proposedAction: enumeration

拖动源建议的来自于Drag.drop()的返回行为。改变这个值将触发携带新的建议的移动事件。

 

.source :Object

用来被拖动事件的接收者确认事件源头的对象。默认是组件实例关联的Drag属性。

当拖动激活后改变值,将触发拖动离开事件,然后触发新源的拖动进入事件,以此来复位拖动事件序列。

 

.supportedActions: flags

被拖动源支持的Drag.drop()返回值。当拖动激活后改变值,将触发拖动离开事件,然后触发新源的拖动进入事件,以此来复位拖动事件序列。

 

.target :Object

当拖动激活后,最后接收拖动的组件实例进入的进入事件的对象。如果当前拖动位置没有和任何接受目标相交叉,那么target是空的。

当拖动没有激活,这个属性保存拖动结束时,接受放置事件的对象。如果拖动被取消或没有对象接受放置事件,则target是空的。

 

AttachedSignal Documentation

dragFinished(DropActionaction)

当拖动完成时,这个信号被触发,拖动可以用startDrag()开始或用dragType自动开始。

 

dragStarted()

当拖动开始时,这个信号被触发,拖动可以用startDrag()开始或用dragType自动开始。

 

AttachedMethod Documentation

voidcancel()

结束拖动序列。

 

enumerationdrop()

通过发送放置事件到目标组件实例来结束拖动序列。

返回被目标实例接受的行为。如果目标实例或父不接受放置事件,Qt.IgnoreAction将被返回,它是下面的值之一:

Qt.CopyAction:拷贝数据到目标

Qt.MoveActionMove:从源移动数据到目标

Qt.LinkActionCreate:建立源到目标的链接

Qt.IgnoreAction:什么都不做。

 

voidstart(flags supportedActions)

开始拖动事件,这是内部拖动的老方法。startDrag是新方法,是拖动的首选方法。可选择是否使用supportedActions参数,用来替代supportedActions属性。

 

voidstartDrag(flags supportedActions)

开始拖动事件。可选择是否使用supportedActions参数,用来替代supportedActions属性。
0 0
原创粉丝点击