Qt - 拖放 - 自定义图形场景 - 事件错误

Qt - Drag and Drop - Custom Graphic Scene - Event error

本文关键字:事件 错误 图形 拖放 自定义 Qt      更新时间:2023-10-16

我创建了简单的d&d drop-像QT Creator菜单一样 - 侧面的ListView和DragScene(我自己的QGraphicsScene子类)。我想创建新的图形项目(我已经为它获得了我的客户类)添加到那里 - 在我放置它的位置。我创建了自己的类:

DragScene.h

#include <QGraphicsScene>
#include <QDebug>
#include <QMimeData>
#include "CustomObj.h"
class DragScene : public QGraphicsScene
{
public:
    DragScene(QObject* parent = 0);
 protected:
     void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
     void dragMoveEvent(QGraphicsSceneDragDropEvent *event);
     void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
     void dropEvent(QGraphicsSceneDragDropEvent *event);
};

拖拽场景.cpp

#include "DragScene.h"
DragScene::DragScene(QObject* parent)
    : QGraphicsScene(parent)
{
}
void DragScene::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
}
void DragScene::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
{
}
void DragScene::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
{
}
void DragScene::dropEvent(QGraphicsSceneDragDropEvent *event)
{
        CustomObj* newObject = new CustomObj(0,0,50,50);
  //      newObject->setPos(event->pos().x(), event->pos().y()); //(1)
        this->addItem(newObject);
        qDebug() <<"New object";
}

现在我只是无法设置这些参数。每次我尝试在这些函数中使用事件(如 (1) )时,我都会收到错误:

无效使用不完整的类型"类 QGraphicsSceneDragDropEvent" newObject->setPos(event->pos().x(), event->pos().y()); ^

"类 QGraphicsSceneDragDropEvent"类的前向声明 QGraphicsSceneDragDropEvent; ^

无效使用不完整的类型"类 QGraphicsSceneDragDropEvent" newObject->setPos(event->pos().x(), event->pos().y()); ^

"类 QGraphicsSceneDragDropEvent"类的前向声明 QGraphicsSceneDragDropEvent; ^

我不知道为什么了 - 我看到很少的例子和那些使用事件而没有任何麻烦的例子,例如:Qt - 使用图形视图框架拖放

编辑 1:添加:

#include <QGraphicsSceneDragDropEvent>

重新编译了它,但现在我可以看到我的事件没有传递任何位置 - 每个对象都指向 (0,0)。

这个怎么样:

#include <QGraphicsSceneDragDropEvent>