【发布时间】:2015-02-06 22:04:43
【问题描述】:
我正在做一个项目,我正在使用 QGraphicsScene 来显示一些多媒体对象,例如使用 QGraphicsItem 的图像和文本。而且我有一个小部件,我可以从其中将一些文件从用户计算机拖放到触发创建新 QGraphicsItem 的场景。
好的,现在这就是我想要做的...我想让那些 QGraphicsItem 在我从小部件中删除一个元素时更改它们的图像、文本等。换句话说,我想让它们表现得像某种可以显示被删除元素的容器。大部分功能已经实现,但我不能让我的 QGraphicsItem 与我的 QGraphicsScene 同时接受放置事件。当其中一个工作时,另一个不工作。
在我的 QGraphicsScene 中的每个“拖动”事件结束时,我插入了以下代码:
void SpatialScene::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
(...)
QGraphicsScene::dragEnterEvent(event);
}
当我这样做时,到达我的 QGraphicsItem 的事件就好了,但是我的所有丢弃事件都被 QGraphicsScene 拒绝了,我不知道为什么。 (我在 dropEvent 方法中收到 IgnoreAction)。
我不知道我是否已经把我的问题说清楚了,但是......有人可以帮我解决这个问题吗?如何让 QGraphicsScene 及其 QGraphicsItem 都接受放置事件?
【问题讨论】:
-
你想在物品和场景中接受相同的掉落事件吗?或者您说的是 2 种不同的掉落物(一种掉落到物品上,另一种掉落到场景中的空白处)?
-
@PavelStrakhov 第二个选项(一个用于项目,另一个用于空白空间)。如果我将文件放在场景中,我想创建一个由我的 QGraphicsItem 表示的新“容器”,但如果我对现有项目之一进行相同的放置,我想将其更新为新文件。 PS:感谢您的回答:)
标签: c++ qt events drag-and-drop