标签: drag-and-drop

使用Qt拖放:在悬停时了解目标应用程序 - 是否可能?

我目前正在探索从Qt应用程序拖放到未知目标应用程序的可能性.问题是Qt应用程序是否有可能接收即将接收丢弃的应用程序的信息(例如进程名称或标题).

一个(组成)示例可能是将绘图从Qt窗口拖动到文本编辑器或电子表格编辑器.在前者中,它将数据作为图像提供,后者作为数据点.

似乎Qt在悬停时有点意识到丢弃的基础目标是什么,因为在改变DropAction状态时会发出actionChanged信号.如果我没有弄错的话,似乎目标应用程序会查看拖动对象中包含的mime类型,并指示该操作将被放置在那里.我也没有从targetChanged信号中获取任何信息(据我所知,这是在当前的Qt应用程序中丢弃).

任何指针都会有所帮助,我很乐意跟进.

c++ qt drag-and-drop

19
推荐指数
1
解决办法
1176
查看次数

使用HTML5原生拖放时如何约束移动?

各种JavaScript库(例如jQuery UI)提供拖放式交互,您可以将拖动元素的移动约束到单个轴或特定区域内.

这种事情是否可以使用原生HTML5拖放 API?

javascript html5 drag-and-drop

19
推荐指数
1
解决办法
6337
查看次数

View.setVisibility中的java.util.ConcurrentModificationException

我正在为观点实施"拖放".当拖动开始时,我将视图的可见性设置为INVISIBLE,然后,如果拖动被中断 - 返回到VISIBLE:

public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        // Skipped some code
        boolean dragStarted = v.startDrag(data, shadowBuilder, v, 0);

        if (dragStarted) {
            v.setVisibility(View.INVISIBLE)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

if (event.getAction() == DragEvent.ACTION_DRAG_ENDED) {
    View droppedView = (View) event.getLocalState();
    droppedView.setVisibility(View.VISIBLE);
}
Run Code Online (Sandbox Code Playgroud)

当调用"Drag ended"事件时,我会遇到异常:

E/AndroidRuntime(7118): FATAL EXCEPTION: main 
E/AndroidRuntime(7118): java.util.ConcurrentModificationException 
E/AndroidRuntime(7118):     at java.util.HashMap$HashIterator.nextEntry(HashMap.java:792)
E/AndroidRuntime(7118):     at java.util.HashMap$KeyIterator.next(HashMap.java:819) 
E/AndroidRuntime(7118):     at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1046)
E/AndroidRuntime(7118):     at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1048)
E/AndroidRuntime(7118):     at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1048)
E/AndroidRuntime(7118):     at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1048)
E/AndroidRuntime(7118):     at android.view.ViewRootImpl.handleDragEvent(ViewRootImpl.java:3471)
E/AndroidRuntime(7118): …
Run Code Online (Sandbox Code Playgroud)

android drag-and-drop view

19
推荐指数
1
解决办法
3858
查看次数

什么是-webkit-user-drag css属性?

我现在已经看过几个这样的地方,但是找不到很多关于它的信息:

-webkit-user-drag: element
Run Code Online (Sandbox Code Playgroud)

这是HTML5拖放标准的一部分吗?这比使用属性版本更好/更差:

<div draggable="true">my draggable element</div>
Run Code Online (Sandbox Code Playgroud)

编辑:我熟悉当前的规范并使用draggable属性,我不清楚的是CSS属性*-user-drag.

css html5 drag-and-drop

19
推荐指数
1
解决办法
3万
查看次数

dragend和drop事件之间是否有定义的顺序?

根据HTML5拖放API 的文档,删除元素时会触发两个事件:

  1. 一个drop事件是由放置目标发射
  2. 一个dragend事件从拖动源发射

在进行简单的测试(参见片段)时,drop事件总是在事件发生之前触发dragend(至少在Chrome中),但我在规范中找不到有关这些事件排序的任何信息.

是定义了这些事件的顺序,还是可以按任意顺序自由发射?

function allowDrop(ev) {
    ev.preventDefault();
}

function drag(ev) {
    ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
    console.log("drop at " + Date.now());
    ev.preventDefault();
    var data = ev.dataTransfer.getData("text");
    ev.target.appendChild(document.getElementById(data));
}

function dragend(ev) {
    console.log("dragend at " + Date.now());
}
Run Code Online (Sandbox Code Playgroud)
#div1 {
  background-color: red;
  height: 100px;
  width: 100px;
}
#drag1 {
  background-color: green;
  height: 50px;
  width: 50px;
}
Run Code Online (Sandbox Code Playgroud)
<div>Drag the green square in to the red one</div>

<div id="div1" ondrop="drop(event)" …
Run Code Online (Sandbox Code Playgroud)

html javascript html5 drag-and-drop

19
推荐指数
1
解决办法
3423
查看次数

Angular CDK 拖放:不要移动源项目

我正在尝试实现一个编辑器,可以在其中拖动项目以将其添加到主要内容中,问题是当我拖出源项目容器时,源项目总是被破坏。

有没有办法强制源项目保持原样,同时仍然可以拖放项目?基本上,我想要一个复制行为而不是移动行为。

我已经看到了与我想要实现的基本目标相对应的其他问题,但它们都没有真正帮助我,因为问题更多地是关于如何在技术上完成复制项目的同时我想知道我如何实现这种行为在 UI 中,因为查看项目是否刚刚消失非常令人困惑。

drag-and-drop angular angular-cdk

19
推荐指数
3
解决办法
7304
查看次数

如何将文件从HTML5拖放到Rails 3 App和Paperclip?

我正在尝试使用Paperclip在Rails 3应用程序中获得一些html5拖放功能.所以,基本上:

  1. 将一个或多个文件拖放到DIV上
  2. 文件被POST到Rails动作(一起或一次一个)
  3. Rails操作将每个文件保存为Paperclip中的新附件

现在,我能够实现这一目标的唯一方法是发送带有文件数据的XMLHttpRequest并让我的Rails操作读取request.raw_post ...这不是一个可行的解决方案,因为我需要发送其他POST参数和真实性令牌.

这是我到目前为止所拥有的:

<!-- IN MY VIEW -->
<h2>Drag and drop upload</h2>

<div id="drop">
  <h2>Drop Files Here</h2>
</div>

<script type="text/javascript" charset="utf-8">
  var dropbox = document.getElementById("drop");  
  drop = function(evt) {   
    evt.stopPropagation();
    evt.preventDefault();
    var files = evt.dataTransfer.files;
    var count = files.length;
    if (count > 0) {
        // handleFiles(files);
      var url = '/images/raw';
      var request = new XMLHttpRequest();
      request.open("POST",  url, true); // open asynchronous post request
      request.send(files[0]);
    }
  }
  dragEnter = function(evt) {
    evt.stopPropagation();
    evt.preventDefault();
  }
  dragExit = …
Run Code Online (Sandbox Code Playgroud)

javascript html5 drag-and-drop ruby-on-rails

18
推荐指数
2
解决办法
9500
查看次数

如何在javascript中为我的可拖动对象设置"边界"区域?

我正在制作一个拖放JavaScript引擎.我学会了如何将边界框设置为父元素.但是,现在我希望将边界框设置为任何父级的任何父级,或者设置为整个页面(无边界).

现在我的Javascript引擎看起来像:

// JavaScript Document

var dragObj;

document.addEventListener("mousedown", down, false);

function down(event) {
    if(~event.target.className.search(/drag/)) {
        dragObj = makeObj(event.target);
        dragObj.element.style.zIndex="100";
        document.addEventListener("mousemove", freeMovement, false);
    }
}

function freeMovement(event) {

    if (typeof(dragObj.element.mouseup) == "undefined")
        document.addEventListener("mouseup", drop, false);
    //Prevents redundantly adding the same event handler repeatedly

    dragObj.element.style.left = Math.max(0, Math.min(event.clientX - dragObj.posX, dragObj.boundX)) + "px";
    dragObj.element.style.top = Math.max(0, Math.min(event.clientY - dragObj.posY, dragObj.boundY)) + "px";
}

function drop() {
    dragObj.element.style.zIndex="1";

    document.removeEventListener("mousemove", freeMovement, false);
    document.removeEventListener("mouseup", drop, false);
    //alert("DEBUG_DROP");
}

function makeBoundlessObj(e) {
    var obj = new …
Run Code Online (Sandbox Code Playgroud)

html javascript css drag-and-drop

18
推荐指数
1
解决办法
1万
查看次数

如何在不违反MVVM主体的情况下处理拖放操作?

目前我在我的XAML中

<TabControl  
    AllowDrop="True"
    PreviewDragOver="DragOver"
    PreviewDrop="Drop" />
Run Code Online (Sandbox Code Playgroud)

我的所有拖放代码都存在于我的View的代码隐藏中,而不是在我的ViewModel中.

如何在ViewModel中处理拖放操作而不在View上添加任何依赖项?

.net wpf drag-and-drop mvvm

18
推荐指数
3
解决办法
2万
查看次数

如何在javascript拖放中倾斜/旋转被拖动的项目?

我想倾斜一个被拖动的项目以显示区别.我有基本的拖放小提琴这里https://jsfiddle.net/igaurav/bqprc9p8/3/

我的javascript看起来像:

"use strict";

var source = null;

function listItemDragStartHandler(event){
    // What is true there for?
    source = event.currentTarget;
    event.dataTransfer.setData("text/plain", event.currentTarget.innerHTML);
    event.currentTarget.style.transform = 'rotate(15deg)';
    event.dataTransfer.effectAllowed = "move";
}

function dragoverHandler(event) {
    event.preventDefault();
    event.dataTransfer.dropEffect = "move";
}

function dropHandler(event) {
    event.preventDefault();
    event.stopPropagation();
    var currentElement = event.currentTarget;
    var listContainer = currentElement.parentNode;
    listContainer.insertBefore(source, currentElement);
    source.style.transform = 'rotate(0deg)';
}

function delete_item(event) {
    var currentTarget = event.currentTarget;
    var grandParentOfDelete = currentTarget.parentNode.parentNode;
    grandParentOfDelete.remove();
}

function add_item() {
    var item_text_node = document.getElementsByName("add-item-text")[0]
    var item_text = item_text_node.value; …
Run Code Online (Sandbox Code Playgroud)

html javascript drag-and-drop

18
推荐指数
2
解决办法
1922
查看次数

标签 统计

drag-and-drop ×10

javascript ×5

html5 ×4

html ×3

css ×2

.net ×1

android ×1

angular ×1

angular-cdk ×1

c++ ×1

mvvm ×1

qt ×1

ruby-on-rails ×1

view ×1

wpf ×1