2014-09-01 77 views
0

我添加了多個橢圓我QGraphicsScene:如何在繼承QGraphicsEllipseItem添加到QGraphicsScene

QGraphicsEllipseItem *ellipse; 
ellipse = sceneCenter->addEllipse(xCor-4,yCor-4,imgW+7,imgH+7,blackpen,redBrush); 

現在,我想補充hoverEnterEvent所以每次我拖我的鼠標,這些橢圓它會做一些時間,所以我做了此類:

#include <QGraphicsEllipseItem> 
#include <QMessageBox> 

class myEllipse : public QGraphicsEllipseItem 
{ 
public: 
    myEllipse(QGraphicsEllipseItem* parent); 
    void hoverEnterEvent(int index); 
}; 

#endif // MYELLIPSE_H 

#include "myellipse.h" 

myEllipse::myEllipse(QGraphicsEllipseItem* parent):QGraphicsEllipseItem(parent){ 
    setAcceptHoverEvents(true); 
} 


void myEllipse::hoverEnterEvent(int index){ 
    QMessageBox q; 
    q.setText("hello"); 
    q.exec(); 
} 

我想用上面的類創建的對象替換QGraphicsEllipseItem。我該怎麼做呢?

+0

戰利品在[QGraphicsScene ::的addItem(*的QGraphicsItem)](http://qt-project.org/doc/qt-4.8/qgraphicsscene.html#addItem) – jbh 2014-09-01 12:09:57

+0

@jbh我知道如何添加正常的QGraphicsItem。我只是不知道如何添加繼承。我試圖添加像正常,但它說無效轉換QGraphicsEllipseItem *到myEllipse *。 – 2014-09-01 12:17:16

+0

'addEllipse'只是一個簡寫。在你的橢圓項目(位置,畫筆等)上設置你想要的屬性,然後將它添加到你的場景中。 – jbh 2014-09-01 12:19:01

回答

0

此刻,你這樣做是: -

QGraphicsEllipseItem *ellipse; 
ellipse = sceneCenter->addEllipse(xCor-4,yCor-4,imgW+7,imgH+7,blackpen,redBrush); 

如果先創建新類的實例,你可以以後再添加它,並設置它的位置和其他屬性: -

myEllipse * ellipse = new myEllipse(parent); 
sceneCenter->addItem(ellipse); 

ellipse->setRect(xCor-4,yCor-4,imgW+7,imgH+7); 
ellipse->setPen(blackpen); 
ellipse->setBrush(redBrush); 
+0

我如何設置這個橢圓的寬度和高度?我無法在文檔中找到它。 hoverEnterEvent也不起作用。 :( – 2014-09-01 12:23:23

+0

對setRect的調用設置了項目的矩形,其中包括寬度和高度 – TheDarkKnight 2014-09-01 12:25:49

+0

ok!它的工作原理與魅力一樣但是hoverEnterEvent仍然不起作用您可以給我一個提示嗎 – 2014-09-01 12:25:53