C++ 选择和移动事件在QGraphicscene中不起作用

C++ 选择和移动事件在QGraphicscene中不起作用,c++,qt,events,C++,Qt,Events,我有一个类继承自qgraphicsitems,另一个类继承自qgraphicscene。我创建了一个自定义项并将它们放置在自定义场景中。 以下是我的事件处理程序函数: void Panel::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent) { if (mouseEvent->button() != Qt::LeftButton) return; //my code QGraphicsSc

我有一个类继承自
qgraphicsitems
,另一个类继承自
qgraphicscene
。我创建了一个自定义项并将它们放置在自定义场景中。 以下是我的事件处理程序函数:

void Panel::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
    if (mouseEvent->button() != Qt::LeftButton)
        return;
    //my code 

    QGraphicsScene::mousePressEvent(mouseEvent);
}

void Panel::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
    //my code 

    QGraphicsScene::mouseMoveEvent(mouseEvent);
}

void Panel::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
    //my code

    QGraphicsScene::mouseReleaseEvent(mouseEvent);
}
然而,这些事件似乎没有得到呼吁。我的代码基于Qt中的
DiagramScene
示例,主要区别在于我的项继承自
QGraphicsItem
,而不是
QGraphicsPolygonItem


如何正确处理事件?

面板::MousePresseEvent()
的实现中,在您自己的代码处理事件后,您将调用
QGraphicscenScene::MousePresseEvent()
qgraphicscene::mousePressEvent()
的默认实现可能会撤消您在自己的代码中所做的事情。例如,
qgraphicscene::mousePressEvent()
的默认实现将事件转发到接受鼠标事件的最顶端的项,该项将成为鼠标抓取器。如果您的代码预期会发生一些其他事情,例如另一个对象应该是抓取器(无法从您发布的有限代码中辨别),那么对基类的调用将撤消您所做的操作

如果希望自己以自定义方式处理事件,则不应调用基类的事件处理程序