[英]Qt mouseMoveEvent not firing when mouse pressed
我有一個自定義QGraphicsScene,其中有一個mouseMoveEvent(QGraphicsSceneMouseEvent * event);
當我將鼠標懸停在場景上時,將正確觸發mouseMoveEvent。
但是,當我將鼠標懸停並按下鼠標時,它將不再被觸發。 這是我在主窗口中設置整個場景的方式:
scene = new NodeScene(this); -> My Custom QGraphicsScene class
scene->setSceneRect(QRectF(0, 0, 5000, 5000));
QHBoxLayout *layout = new QHBoxLayout;
view = new QGraphicsView(scene);
layout->addWidget(view);
view->setDragMode(QGraphicsView::RubberBandDrag);
view->setMouseTracking(true);
QWidget *widget = new QWidget;
widget->setLayout(layout);
setCentralWidget(widget);
scene->setCentralWidget(widget);
這是我處理鼠標事件的代碼(用於Maya執行):
void NodeScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
MGlobal::displayInfo("Move");
QGraphicsScene::mouseMoveEvent(event);
}
void NodeScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
MGlobal::displayInfo("Press");
QGraphicsScene::mousePressEvent(event);
}
void NodeScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
{
MGlobal::displayInfo("Release");
QGraphicsScene::mouseReleaseEvent(event);
}
知道即使按下鼠標按鈕也如何獲取mouseMoveEvents嗎?
聽起來您並沒有實現所有的鼠標事件,而只是實現了mouseMoveEvent。
覆蓋鼠標事件時,應處理所有事件(移動,按下和釋放事件)。
然后,您可以在press事件中設置一個布爾值,以知道在進入mouseMove事件時是否按住了鼠標按鈕。
通過將我的代碼與其他示例進行比較發現了問題,這是由於setDragMode(QGraphicsView::RubberBandDrag);
導致的setDragMode(QGraphicsView::RubberBandDrag);
線。 默認情況下,該代碼應位於QGraphicsView :: NoDrag上,並且僅在按下時才啟用RubberBandDrag。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.