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"
        }
    }
    
    
  • 相关阅读:
    Java中Runnable和Thread的区别
    git 代理设置
    Android的bitmap和优化
    String、StringBuffer与StringBuilder之间区别
    工作流的一些记录
    UIAutomation调用计算器模拟自动执行
    从客户端(Content="<EM ><STRONG ><U >这是测试这...")中检测到有潜在危险的Request.Form 值。
    泛型
    基础加强
    数据库和ado
  • 原文地址:https://www.cnblogs.com/charleechan/p/12340856.html
Copyright © 2011-2022 走看看