2016-03-02 61 views
0

我創建了簡單的d-& d-drop,就像QT Creator菜單 - ListView和DragScene(我自己的QGraphicsScene的子類)。我想創建新的圖形項目(我已經有我的客戶mclasses)添加到那裏 - 在我放棄它的地方。我創建了自己的類:Qt - 拖放 - 自定義圖形場景 - 事件錯誤

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))中的那些功能我得到的錯誤:

無效使用不完全類型的「類QGraphicsSceneDragDropEvent」 newObject-> setPos(事件 - > POS()×( ),event-> pos()。y()); ^

'class QGraphicsSceneDragDropEvent'類的前向聲明 QGraphicsSceneDragDropEvent; ^

無效使用不完整的類型的 '類QGraphicsSceneDragDropEvent' newObject-> setPos(事件 - >正()X(),事件 - >正()Y()); ^

'class QGraphicsSceneDragDropEvent'類的前向聲明 QGraphicsSceneDragDropEvent; ^

我不知道爲什麼了 - 我看到幾個exemples和那些目不轉睛期運用事件沒有任何麻煩,如: Qt - drag and drop with graphics view framework

編輯1: 添加:

#include <QGraphicsSceneDragDropEvent> 

recolved它,但現在我可以看到我的事件沒有傳遞任何位置 - 每個對象都被指定爲(0,0)。

+0

你最初的問題就解決了(我投票決定關閉它,因爲它是被遺忘的一個簡單的報頭)。請不要更新你的問題來改變它的目的。而是開一個新的問題,只包括與實際問題相關的材料。 – undu

回答

0

如何:

#include <QGraphicsSceneDragDropEvent> 
+0

Thx,解決了它。我現在感到很無聊。但爲什麼呢?來自QT頁面的示例沒有包含它(例如,標籤:http://doc.qt.io/qt-4.8/qt-draganddrop-draggabletext-example.html) – Arker

+2

@Arker如果您指的是'QDropEvent'使用的byt例子中,這個例子包含'QtGui',它幾乎包含了所有的GUI相關的東西。但你不應該那樣做。 – thuga

+0

該示例不涉及* QGraphicsScene *,因此它不需要包含該類。 – Tomas