Qt - 拖放 - 自定义图形场景 - 事件错误
Qt - Drag and Drop - Custom Graphic Scene - Event error
我创建了简单的 d&d drop - 类似 QT Creator 菜单的东西 - 侧面的 ListView 和 DragScene(我自己的 QGraphicsScene 的子class)。我想创建新的图形项目(我已经为它定制了 mclasses)以将其添加到那里 - 在我放下它的地方。我创建了自己的 class:
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) 中)时,我都会收到错误消息:
invalid use of incomplete type 'class QGraphicsSceneDragDropEvent'
newObject->setPos(event->pos().x(), event->pos().y());
^
forward declaration of 'class QGraphicsSceneDragDropEvent' class
QGraphicsSceneDragDropEvent;
^
invalid use of incomplete type 'class QGraphicsSceneDragDropEvent'
newObject->setPos(event->pos().x(), event->pos().y());
^
forward declaration of 'class QGraphicsSceneDragDropEvent' class
QGraphicsSceneDragDropEvent;
^
我不知道为什么了 - 我看到的例子很少,而且那些使用事件没有任何问题的例子,比如:
Qt - drag and drop with graphics view framework
编辑 1:
添加:
#include <QGraphicsSceneDragDropEvent>
recolved 它,但现在我可以看到我的事件没有通过任何位置 - 每个对象都被设置为 (0,0)。
这个怎么样:
#include <QGraphicsSceneDragDropEvent>
我创建了简单的 d&d drop - 类似 QT Creator 菜单的东西 - 侧面的 ListView 和 DragScene(我自己的 QGraphicsScene 的子class)。我想创建新的图形项目(我已经为它定制了 mclasses)以将其添加到那里 - 在我放下它的地方。我创建了自己的 class:
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) 中)时,我都会收到错误消息:
invalid use of incomplete type 'class QGraphicsSceneDragDropEvent' newObject->setPos(event->pos().x(), event->pos().y()); ^
forward declaration of 'class QGraphicsSceneDragDropEvent' class QGraphicsSceneDragDropEvent; ^
invalid use of incomplete type 'class QGraphicsSceneDragDropEvent' newObject->setPos(event->pos().x(), event->pos().y()); ^
forward declaration of 'class QGraphicsSceneDragDropEvent' class QGraphicsSceneDragDropEvent; ^
我不知道为什么了 - 我看到的例子很少,而且那些使用事件没有任何问题的例子,比如: Qt - drag and drop with graphics view framework
编辑 1: 添加:
#include <QGraphicsSceneDragDropEvent>
recolved 它,但现在我可以看到我的事件没有通过任何位置 - 每个对象都被设置为 (0,0)。
这个怎么样:
#include <QGraphicsSceneDragDropEvent>