QGraphicsView中的MouseMoveEvent

时间:2014-02-22 16:53:53

标签: c++ qt events qgraphicsview

我需要在我的主窗口小部件中获取移动事件,但QGraphicsView捕获事件,因此我无法在我的主窗口小部件中获取它。有什么方法可以关闭它,所以我可以抓住事件,就像我会在我的小部件中捕获任何mousemoveevent。注意:问题不在于我禁用了鼠标跟踪。我知道这一点,并在graphicsview之外捕捉这个事件正在运作

1 个答案:

答案 0 :(得分:0)

以下是其中几十种可能的解决方案:

忽略

来自文档:

  

如果您的小鼠事件未处理,则应调用ignore()   小部件。鼠标事件沿父窗口小部件链向上传播,直到a   widget使用accept()接受它,或者事件过滤器使用它。

// view.cpp

mouseMoveEvent(QMouseEvent *event){
event.ignore(); // propagated to parent
}

双重赛事

当发生移动事件时,尝试从QGraphicsView发出带有鼠标位置的信号,并在主窗口小部件中捕获它。

// view.cpp

mouseMoveEvent (QMouseEvent *event){
    emit mouseMoveSignal(event.pos());
    }


// mainwindow.cpp

mainWindow::mainWindow (QWidget * parent = 0){
    connect(view, SIGNAL(mouseMoveSignal(QPointF)), this, SLOT(mouseMoveSlot(QPointF)));
}