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

时间:2016-03-02 09:30:12

标签: c++ qt drag-and-drop qgraphicsview

我创建了简单的d& d drop-soemthing,如QT Creator菜单 - 侧面的ListView和DragScene(我自己的QGraphicsScene的子类)。我想创建新的Graphic项目(我已经有了我的custo mclasses)添加到那里 - 我放弃它的位置。我创建了自己的课程:

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);
};

DragScene.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))我都会遇到错误:

  

无效使用不完整类型&#39;类QGraphicsSceneDragDropEvent&#39;            newObject-&gt; setPos(event-&gt; pos()。x(),event-&gt; pos()。y());                                   ^

     

前瞻性声明&#39;类QGraphicsSceneDragDropEvent&#39;类   QGraphicsSceneDragDropEvent;          ^

     

无效使用不完整类型&#39;类QGraphicsSceneDragDropEvent&#39;            newObject-&gt; setPos(event-&gt; pos()。x(),event-&gt; pos()。y());                                                     ^

     

前瞻性声明&#39;类QGraphicsSceneDragDropEvent&#39;类   QGraphicsSceneDragDropEvent;          ^

我不知道为什么 - 我看到了一些例子和那些使用事件没有任何麻烦,例如: Qt - drag and drop with graphics view framework

编辑1: 添加:

#include <QGraphicsSceneDragDropEvent>

解决了它,但现在我可以看到我的事件没有通过任何位置 - 每个对象都被设置为(0,0)。

1 个答案:

答案 0 :(得分:0)

这个怎么样:

#include <QGraphicsSceneDragDropEvent>