标签: drag-and-drop

在 WPF 中的 ListBox 项和 Grid 单元格之间拖放?

有一个包含一些项目的列表框。还有一个带有 3x3 矩阵的网格。用户将拖动一个项目并将其放在网格的单元格上。

我发现的大多数示例都是关于从一个列表框拖放到另一个列表框的。但我想放入网格的一个单元格中。我怎样才能做到这一点?

请指教。谢谢 PJ

wpf grid drag-and-drop listbox

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

Qt:在 QMimeData 中传递指向 QObject 的指针

是否可以在拖放操作期间使用 QMimeData 将指针传递给 QObject?QMimeData 只有这个功能用于存储数据:

void QMimeData::setData(constQString &mimeType, const QByteArray &data)
Run Code Online (Sandbox Code Playgroud)

但我找不到将指针安全地编码为 QByteArray 的方法。

为了阐明我的目标:我需要在拖放操作期间将指向 QObject 的指针从模型传递到目标小部件。

编辑:据我所知,Mime 数据就是将独立于应用程序的数据从一个地方传递到另一个地方:url、颜色、html 代码。在我的情况下,我需要传递一个指向应用程序中的资源对象的指针。你通常如何处理这种拖放?

谢谢安东

qt pointers drag-and-drop qobject

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

如何在同一个 ListView 中拖放项目?

在此处输入图片说明

考虑到这是一个显示文件和文件夹的 ListView,我已经为复制/移动/重命名/显示属性等编写了代码,我只需要最后一件事。如何像在 Windows 资源管理器中一样在同一个 ListView 中拖放,我有移动和复制功能,我只需要获取用户在某个文件夹中放置的项目或以其他方式我需要获取这两个参数来调用复制功能

void copy(ListViewItem [] droppedItems, string destination path)
{
 // Copy target to destination
}
Run Code Online (Sandbox Code Playgroud)

c# listview drag-and-drop copy listviewitem

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

如何在自定义 QTextEdit 中接受从 QListWidget 拖放

在我自己的 TextEdit(继承QTextEdit)中,我实现了这个 DragEventHandler:

void CustomTextEdit::dragEnterEvent(QDragEnterEvent* e)
{
    qDebug() << "void CustomTextEdit::dragEnterEvent(QDragEnterEvent* e)";
    qDebug() << "e->mimeData()->hasText() is" << e->mimeData()->hasText();

    QTextEdit::dragEnterEvent(e);
}
Run Code Online (Sandbox Code Playgroud)

示例:当我在 TextEdit 中选择文本并拖动它时,处理程序被调用并且hasText()true.

当我从一个拖动一个项目QListWidget到文本编辑处理程序也被调用,但是hasText()false。我该如何处理 DropEvent 呢?(QDragEnterEvent基本上是一个QDropEvent

我知道这将在 DropHandler 中完成,但我的问题是 DropEvent 来自QListWidget包含哪些信息? 如何访问这些信息?

qt drag-and-drop

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

具有自定义 NSMenu/MenuItems 和拖放功能的 Mac OSX NSStatusItem

我正在尝试创建一个在状态栏中具有 NSStatusItem 图标的 Mac 应用程序。状态栏图标应支持文件拖放,并且在单击时还必须显示菜单。

问题是我已经设法分别实现了这两个功能,并且很难将它们合并在一起。

我能够使用此链接创建状态栏应用程序:

http://cocoatutorial.grapewave.com/2010/01/creating-a-status-bar-application/

然后我能够使用以下链接在状态栏图标上实现拖放功能

使用 NSStatusItem 拖放

我面临的问题如下,为了进行拖放,我必须创建另一个视图,然后将该视图分配给 NSStatusItem,如下所示:

NSStatusItem *statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];

ViewWithDragFunctionality* viewWithDrag = [[ViewWithDragFunctionality alloc] initWithFrame:NSMakeRect(0, 0, 24, 24)];
[statusItem.view addSubview:viewWithDrag];
Run Code Online (Sandbox Code Playgroud)

由于这只是一个视图,它显然不像 NSStatusItem 的默认视图那样运行,并且不支持鼠标交互或其他任何东西。通过向 ViewWithDragFunctionality.m 添加以下函数,我设法找到了解决方法

- (void)mouseDown:(NSEvent *)theEvent {
    NSLog(@"Status Bar Icon Clicked");
}
Run Code Online (Sandbox Code Playgroud)

只要单击状态栏图标并且还检测到文件拖放,就会调用该函数。

但是现在我被困在弄清楚如何在单击状态栏图标时显示菜单。

任何帮助都感激不尽。我正在为此寻找解决方案,如果我先找到一些东西,我会在这里发布:)

问候

舒迈斯

macos drag-and-drop nsmenu nsstatusitem nsmenuitem

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

在android中拖放具有多种布局的自动滚动

“当我拖放具有多个布局的图像时,自动滚动效果不佳”

我到处搜索,但找不到解决方案。我从这个链接得到了一个解决方案:

在 Android 中通过拖放进行滚动视图自动滚动

@thehayro 感谢提供这么好的例子。

但它仅适用于一种布局,并且自动滚动也有效。但是我在一个线性布局中有超过 4-5 个子布局,并且此布局在滚动视图中,我的布局文件如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<com.example.dragvdropdemo.MyScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/scroll_view">
<LinearLayout 
 android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/lldrag">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="200dip" 
    android:id="@+id/ll1"
    android:layout_marginTop="10dip"
     android:background="@android:color/darker_gray">

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/dr_logo" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/fb" />

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="200dip" 
    android:id="@+id/ll2"
    android:layout_marginTop="10dip"
    android:background="@android:color/darker_gray">


    <ImageView
        android:id="@+id/ImageView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/twitter" />

    <ImageView
        android:id="@+id/ImageView02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/ImageView03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="200dip" 
    android:id="@+id/ll3"
    android:layout_marginTop="10dip" …
Run Code Online (Sandbox Code Playgroud)

android drag-and-drop android-scrollview

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

D3 在鼠标按下期间触发拖动

有没有办法单击 svg 中的任意位置并使元素捕捉到该位置并同时开始拖动?

我得到的最接近的是下面的代码。拖动圆圈有效并单击其他地方将使圆圈移动到该位置,但我无法弄清楚如何在不释放鼠标并直接单击圆圈的情况下开始拖动。

更一般地说,如何在不直接与被拖动元素交互的情况下开始拖动行为?

http://jsfiddle.net/Hj44M/1/

var width = 200,
    height = 200,
    radius = 10;

var drag = d3.behavior.drag()
    .origin(function(d) { return d; })
    .on("dragstart", function(){
        d3.event.sourceEvent.stopPropagation()
    })
    .on("drag", dragmove);

var svg = d3.select("body")
    .data([{x: 100, y : 100}])
    .append('svg')
    .attr("height", 200)
    .attr("widht", 200)
    .on("mousedown", function(){
        circle.each(dragmove)
    });


var circle = svg.append("circle")
    .attr("r", radius)
    .attr("cx", function(d) { return d.x; })
    .attr("cy", function(d) { return d.y; })
    .call(drag);

function dragmove(d) {
    d3.select(this)
    .attr("cx", d.x = Math.max(radius, Math.min(width - radius, d3.event.x))) …
Run Code Online (Sandbox Code Playgroud)

javascript svg drag-and-drop d3.js

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

C# 在 RichTextBox 中拖放文本

我有,我希望用户能够拖拽文本(C#项目,即移动文本)一个RichTextBox在WinForm的。

我找到了许多示例,展示了如何将某些内容拖放到 RichTextBox 上,但是当 RichTextBox 既是拖放源又是拖放目标时,我没有成功地让它们工作。

我该怎么做?

以下是我迄今为止的非工作尝试。

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        this.richTextBox1.AllowDrop = true;
        this.richTextBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.richTextBox1_DragEnter);
        this.richTextBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.richTextBox1_DragDrop);
    }

    private void richTextBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) {
        if (e.Data.GetDataPresent(DataFormats.Rtf))
            e.Effect = DragDropEffects.Move;
        else
            e.Effect = DragDropEffects.None;
    }
    private void richTextBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) {
        int i;
        String s;

        i = richTextBox1.SelectionStart;
        s = richTextBox1.Text.Substring(i);
        richTextBox1.Text = richTextBox1.Text.Substring(0, i);

        richTextBox1.Text = richTextBox1.Text +
           e.Data.GetData(DataFormats.Text).ToString();
        richTextBox1.Text = …
Run Code Online (Sandbox Code Playgroud)

c# drag-and-drop richtextbox winforms

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

从一种形式拖放到另一种形式的任何位置

我有一个带有两个表单的 MDI 表单应用程序。第一个有一个 StringGrid,第二个有很多 Edit 控件和几个按钮。

我需要从网格中拖放到第二个表单上,并使用第一个表单中 StringGrid 中所选单元格的值更新一个 Edit。

如果我事先知道用户将在哪个控件上释放鼠标左键,这很容易做到,因为我可以设置该特定控件的 OnDragDrop 事件。但我不想为第二个窗体上的每个控件编写多个 OnDragDrop 事件。

如何拦截表单范围的消息以拦截任何控件上的删除操作?

delphi drag-and-drop drag delphi-xe2

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

UICollectionViewCell的自定义视图拖动预览

我正在尝试实现一项功能,该功能由用户将一个collectionview单元拖放到另一个单元上。但是,我想完全更改运动中物体的预览,以匹配我的应用程序的视觉隐喻(该物体没有移动,该物体包含的东西正在移动)。

例如,假设我的collectionview单元显示了一支猪笔,而我想让猪从一支笔移动到另一只笔,则预览视图应该是只显示一只而不是一支笔的视图。这与苹果使用其API的意图稍有不同,但我认为这是有效的。

我已经看到过,func collectionView(_ collectionView: UICollectionView, dragPreviewParametersForItemAt indexPath: IndexPath) -> UIDragPreviewParameters但这只是让您稍微裁剪一下,而不是重新制作整个视图。

有什么想法/想法吗?

drag-and-drop ios uicollectionview

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