Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将继承QGraphicsSellipsItem添加到QGraphicscene_C++_Qt - Fatal编程技术网

C++ 如何将继承QGraphicsSellipsItem添加到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

我在QGraphicscene中添加了多个椭圆:

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)-你是救世主。非常感谢你。只要测试一下,它就会完美地工作。