C++ 如何将继承QGraphicsSellipsItem添加到QGraphicscene
我在QGraphicscene中添加了多个椭圆:C++ 如何将继承QGraphicsSellipsItem添加到QGraphicscene,c++,qt,C++,Qt,我在QGraphicscene中添加了多个椭圆: QGraphicsEllipseItem *ellipse; ellipse = sceneCenter->addEllipse(xCor-4,yCor-4,imgW+7,imgH+7,blackpen,redBrush); 现在我想添加hoverEnterEvent,所以每次我将鼠标拖动到这些椭圆上,它都会做一些事情,所以我创建了这个类: #include <QGraphicsEllipseItem> #include &l
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();
}
#包括
#包括
myEllipse类:公共QGraphicsSellipseItem
{
公众:
髓鞘(QGraphicsEllipseItem*父母);
无效事件(整数索引);
};
#endif//MYELLIPSE\u H
#包括“myellipse.h”
myEllipse::myEllipse(QGraphicsSellipseitem*父级):QGraphicsSellipseitem(父级){
setAcceptHoverEvents(true);
}
void myEllipse::hoverEnterEvent(int索引){
QMessageBox q;
q、 setText(“你好”);
q、 exec();
}
我想用上面的类创建的对象替换QGraphicsSellipseitem。我该怎么做 目前,您正在这样做:-
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);
我知道如何添加普通的QGraphicsItem。我只是不知道如何添加继承一个。我试着像普通人一样添加,但它说QGraphicsSellipseItem*到myEllipse*
addEllipse
的无效转换只是一个简写。在elipse项目上设置所需的属性(位置、笔刷等),然后将其添加到场景中。如何设置此椭圆的宽度和高度?我在文档中找不到它。并且hoverenter事件也不起作用:(调用setRect设置项目的矩形,其中包括宽度和高度。确定!它的工作方式类似于charm。但是hoverEnterEvent仍然不起作用。您能给我一个提示吗?请注意,hover事件的签名不以int作为参数,而是void hoverEnterEvent(QGraphicsCeneHoverEvent*event)-你是救世主。非常感谢你。只要测试一下,它就会完美地工作。