Qt - 当放置位置是其他应用程序时,如何强制放置操作为复制操作

标签 qt drag-and-drop

我对 QMimeData 进行了子类化,并且拖放在我的小部件中工作得非常好——对于 copyAction 和 MoveAction,数据会根据需要被复制和移动(基于 shift/ctrl 键等)

为了兼容性,我支持其他简单格式,例如 text/plain - 主要问题是,对于这些兼容格式,我不能允许将 drop 操作“移动”到其他应用程序。

例如,我允许将我的数据从我的小部件拖放到某个文本框——但前提是它是“copyAction”。但是,我看不出有任何强制方式。

问题:如何强制所有外部小部件的放置 Action 为“复制 Action ”,同时允许在我的小部件内复制/移动?????

“强制”意味着无论用户选择什么(ctrl、shift 或其他) - 当针对兼容格式发生拖动时,我的数据应该始终被“复制”而不是“移动”。 (虽然它应该允许复制和移动其原生格式)

如何在 Qt 中执行此操作?

最佳答案

这似乎是 Qt 中的一个限制。
This post描述了问题并表明问题出在 QAbstractItemView::startDrag() 中。
从本质上讲,Qt 不能直接让您在内部拖动到同一个小部件,也不能直接拖动到外部应用程序。

关于Qt - 当放置位置是其他应用程序时,如何强制放置操作为复制操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9509540/

相关文章:

android - View 拖放更新时出现 stackoverflow 错误

javascript - 如何使用CSS让光标在中间调整图像大小?

html - 在 Javascript 中缩放图像视口(viewport)

c++ - Qt : multiple defined symbols found

Qt Widget 暂时全屏

c++ - Qt中多个ui窗体的切换

android - ScrollView 和触摸监听器

c++ - 使用 QGraphicsScene 平滑动画

QTreeview : How to change the defalut position of the text item

c# - 是否可以在不将源移动到目标的情况下在 C# 中进行拖放?