我创建了简单的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)。
答案 0 :(得分:0)
这个怎么样:
#include <QGraphicsSceneDragDropEvent>