gpt4 book ai didi

c++ - 如何在 QGraphicsItem 派生类中接收鼠标事件? Qt

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:19 25 4
gpt4 key购买 nike

已经有关于此的线程,但我能找到的解决方案不起作用。解决方案:在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com