2017-08-04 122 views
0

目前已經有線程了,但是我能找到的解決方案不起作用。 解決方案: 在我的MousePressEvent類的QGraphicsView派生類的末尾寫QGraphicsView::MousePressEvent(event);。 兩者都不起作用。 QGraphicsItem類不接收鼠標事件。 這是我MousePressEvent在我的QGraphicsView類:如何在QGraphicsItem派生類中接收鼠標事件? Qt

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!"; 
} 

任何想法,我已經忘記了嗎?

+0

你叫「QGraphicsView :: mousePressEvent(event);」在你的graphicsview類的mousePressEvent函數中?同時檢查boundingRect()函數是否在您的graphicsitem類中正確實現。 –

回答

0

ANSWER 永遠不要忘記調用

QGraphicsView::mousePressEvent(event);/
QGraphicsView::mouseReleaseEvent(event);/
QGraphicsView::mouseMoveEvent(event); 
... 

在每次的MouseEvent的你在你的QGraphicsView派生類中重寫了結束(在mouseMoveEvent使用的QGraphicsView :: mouseMoveEvent(事件)等等)。 否則真的很奇怪的事情可能會發生。 此外,如果你甚至沒有在你的QGraphicsItem派生類中使用其中的一些,請在每個事件中調用它。

相關問題