Qt mouseMoveEvent不触发当鼠标按下
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);
这里是代码,我做处理鼠标事件(这是玛雅执行):
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。
当重写一个鼠标事件时,你应该处理所有的事件(移动,按下和释放事件)。
您可以在按下事件中设置一个布尔值,以知道在进入mouseMove事件时鼠标按钮是否按下。
通过将我的代码与其他示例进行比较发现了这个问题,这是由于setDragMode(QGraphicsView::RubberBandDrag);
线。默认情况下,代码应该在QGraphicsView::NoDrag上,并且RubberBandDrag仅在按下时启用。
相关文章:
- WinAPI挂钩鼠标
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 跟踪滚动条上的鼠标事件
- SendInput()鼠标移动计算
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 如何在鼠标挂钩过程中检测拖动
- Win32 发送输入鼠标移动滞后并冻结
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- 有没有办法区分Qt小部件是通过鼠标单击还是通过按表键获得焦点?
- 在 macOS 中使用 C/C++ 设置鼠标光标图像
- 如何通过拖动鼠标QT检查按钮?鼠标移动事件
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在QSplashScreen中禁用鼠标单击
- C++鼠标单击时的屏幕截图不起作用
- 如何将鼠标坐标转换为"mm"
- 标签检测鼠标单击 c++
- 使用 SFML 在矩形的矢量中查找鼠标单击量
- 在 OpenGL 中使用透视与正交投影时的光线投射(鼠标拾取)
- 如何使用鼠标单击选择多个 QLabel 对象?
- 在 C# 中更改鼠标光标图标