已经有关于此的线程,但我能找到的解决方案不起作用。
解决方案:
在 QGraphicsView 派生类中的 MousePressEvent 类末尾写入 QGraphicsView::MousePressEvent(event);
。
两者都不起作用。 QGraphicsItem 类不接收鼠标事件。
这是我的 QGraphicsView 类中的 MousePressEvent:
void GraphWidget::mousePressEvent(QMouseEvent *event){
mousePressed = true;
if (event->button() == Qt::RightButton) // doesn't matter
{
rightMousePressed = true;
_panStartX = event->x();
_panStartY = event->y();
setCursor(Qt::ClosedHandCursor);
event->accept();
return;
}
// And I tried this: QGraphicsView::mousePressEvent(event);
}
这是我的 QGraphicsItem 类中的 MousePressEvent:
void Node::mousePressEvent(QGraphicsSceneMouseEvent *event){
mousePressed = true;
qDebug() << "mouse trigered!";
}
任何想法,我忘记了什么?
最佳答案
回答 永远不要忘记打电话
QGraphicsView::mousePressEvent(event); /
QGraphicsView::mouseReleaseEvent(event); /
QGraphicsView::mouseMoveEvent(event);
...
在您在 QGraphicsView 派生类中覆盖的每个 mouseEvent 的末尾(在 mouseMoveEvent 中使用 QGraphicsView::mouseMoveEvent(event) 等等)。 否则真的会发生奇怪的事情。 此外,如果您甚至没有在 QGraphicsItem 派生类中使用其中的一些,请在每个事件中调用它。
关于c++ - 如何在 QGraphicsItem 派生类中接收鼠标事件? Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509200/