2014-09-01 109 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