【问题标题】:Qt - How to force the drop action to be copyaction when the drop location is some other applicationQt - 当放置位置是其他应用程序时,如何强制放置操作为复制操作
【发布时间】:2012-03-01 01:52:42
【问题描述】:

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

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

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

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

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

如何在 Qt 中强制执行?

【问题讨论】:

    标签: qt drag-and-drop


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 2021-06-20
      • 2012-11-25
      • 2016-08-30
      相关资源
      最近更新 更多