gpt4 book ai didi

c++ - QGraphicsView 中的 MouseMoveEvent

转载 作者:太空宇宙 更新时间:2023-11-04 13:54:52 24 4
gpt4 key购买 nike

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

最佳答案

在几十个解决方案中,这里有两个可能的解决方案:

忽略

来自文档:

You should call ignore() if the mouse event is not handled by your widget. A mouse event is propagated up the parent widget chain until a widget accepts it with accept(), or an event filter consumes it.

// 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)));
}

关于c++ - QGraphicsView 中的 MouseMoveEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21957314/

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