当前位置:  开发笔记 > 编程语言 > 正文

QML:即使drag属性处于活动状态,也不会调用onDragStarted / finish

如何解决《QML:即使drag属性处于活动状态,也不会调用onDragStarted/finish》经验,为你挑选了1个好方法。

在下面的示例中,我希望在拖动一个矩形时调用onDragStarted/ onDragFinished。但是,仅drag.onActiveChanged(mouseArea的)和Drag.onActiveChanged(矩形的)被调用。设置为时Drag.dragType,我得到了预期的输出,Drag.Automatic但是我再也看不到矩形了。我在Mac(El Capitan)上使用Qt 5.5。

import QtQuick 2.5
import QtQuick.Window 2.2

Window {
  visible: true

  width: 100
  height: 200

  ListModel {
    id: testModel
    ListElement { name: "red";   value: "#f00" }
    ListElement { name: "green"; value: "#0f0" }
    ListElement { name: "blue";  value: "#00f" }
  }

  Component {
    id: rect
    Rectangle {

      Drag.active: mouseArea.drag.active
      Drag.hotSpot.x: width / 2
      Drag.hotSpot.y: height / 2
      //Drag.dragType: Drag.Automatic

      Drag.onActiveChanged: {
        console.log("Active changed..")
      }

      Drag.onDragStarted: {
        console.log("Drag started..")
      }

      Drag.onDragFinished: {
        console.log("Drag finished!")
      }

      MouseArea {
        id: mouseArea

        anchors.fill: parent
        hoverEnabled: true
        drag.target: parent

        drag.onActiveChanged: {
          console.log("Drag prop became active..")
        }

        onClicked: {
          colorButtonClicked(buttonName, buttonColor);
        }
      }

      width: 80
      height: 20
      radius: 6
      color: model.value
    }
  }

  Column {
    spacing: 3
    anchors.centerIn: parent
    Repeater {
      model: testModel
      delegate: rect
    }
  }
}

Kim.. 5

根据信号名称的假设,我对相同的问题感到困惑,但查看文档显示,信号仅在使用Drag.Automatic或显式调用时才有效startDrag

dragStarted()

当使用startDrag()方法启动拖动或使用dragType属性自动启动拖动时,将发出此信号。

dragFinished(DropAction操作)

当拖动完成并且使用startDrag()方法启动拖动或使用dragType属性自动启动拖动时,将发出此信号。

使用时看到的另一个问题Drag.Automatic似乎在Qt 5.6.1中已修复



1> Kim..:

根据信号名称的假设,我对相同的问题感到困惑,但查看文档显示,信号仅在使用Drag.Automatic或显式调用时才有效startDrag

dragStarted()

当使用startDrag()方法启动拖动或使用dragType属性自动启动拖动时,将发出此信号。

dragFinished(DropAction操作)

当拖动完成并且使用startDrag()方法启动拖动或使用dragType属性自动启动拖动时,将发出此信号。

使用时看到的另一个问题Drag.Automatic似乎在Qt 5.6.1中已修复

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有