zoukankan      html  css  js  c++  java
  • Qt Quick开发教程4-QML拖放

    在文本/富文本编辑器中,常用到拖放动作.

    import QtQuick 2.2
    import "../shared" as Examples
    
    Rectangle {
        id: item
        property string display
        property alias dropEnabled: acceptDropCB.checked
        color: dropArea.containsDrag ? "#CFC" : "#EEE"
        ColorAnimation on color {
            id: rejectAnimation
            from: "#FCC"
            to: "#EEE"
            duration: 1000
        }
        //要显示的文本
        Text {
            anchors.fill: parent
            text: item.display
            wrapMode: Text.WordWrap
        }
        //放下动作区域设置:
        DropArea {
            id: dropArea
            anchors.fill: parent
            keys: ["text/plain"]    //只接受这个属性"text/plain"的放下动作
            onEntered: if (!acceptDropCB.checked) {    //当鼠标进入该区域时,如果不接受放下,那就显示拒绝动画
                drag.accepted = false
                rejectAnimation.start()
            }
            onDropped: if (drop.hasText && acceptDropCB.checked) { //当鼠标在该区域释放,把其中的文本取出来,并显示
                if (drop.proposedAction == Qt.MoveAction || drop.proposedAction == Qt.CopyAction) {
                    item.display = drop.text
                    drop.acceptProposedAction()
                }
            }
        }
        //拖走动作需要在MouseArea区域里设置,因为拖动是属于MouseArea的一部分
        MouseArea {
            id: mouseArea
            anchors.fill: parent
            drag.target: draggable
        }
        //软件是拖走一端的时候要实现的部分
        //拖走动作的实现:当MouseArea的拖走激活,他也激活,mimeData指定了拖动的数据内容,拖动类型设置为自动,
        Item {
            id: draggable
            anchors.fill: parent
            Drag.active: mouseArea.drag.active
            Drag.hotSpot.x: 0
            Drag.hotSpot.y: 0
            Drag.mimeData: { "text/plain": item.display }
            Drag.dragType: Drag.Automatic
            Drag.onDragFinished: if (dropAction == Qt.MoveAction) item.display = ""
        }
        Examples.CheckBox {
            id: acceptDropCB
            anchors.right: parent.right
            checked: true
            text: "accept drop"
        }
    }
    
    
  • 相关阅读:
    矩阵十题(7)
    线段树成段更新 poj 3468 A Simple Problem with Integers
    线段树单点更新 hdu 2795 Billboard
    线段树成段更新 poj 2528 Mayor's posters
    矩阵十题(10)
    矩阵十题(8)
    矩阵十题(5)
    矩阵十题(6)
    矩阵十题(9)
    矩阵十题(4)
  • 原文地址:https://www.cnblogs.com/charleechan/p/12340856.html
Copyright © 2011-2022 走看看