触发鼠标按下事件,但不触发鼠标移动事件
Mouse-pressed event is fired but mouse-moved event is not
我正在使用Qt3D。我正在将QObjectPicker添加到我的3D实体中,如下所示:
Qt3DRender::QObjectPicker *MyScene::createObjectPickerForEntity(Qt3DCore::QEntity *entity)
{
if (!entity)
return nullptr;
picker = new Qt3DRender::QObjectPicker(entity);
picker->setHoverEnabled(true); // I set this correctly
picker->setDragEnabled(true); // Also required!
picker->setObjectName(QStringLiteral("__internal ") + entity->objectName());
entity->addComponent(picker);
connect(picker, &Qt3DRender::QObjectPicker::pressed, this, &MyScene::handlePickerPress);
connect(picker, &Qt3DRender::QObjectPicker::moved, this, &MyScene::handlePickerMove);
return picker;
}
触发鼠标按下事件,相应的插槽正确记录按下实体的名称和全局坐标:
void MyScene::handlePickerPress(Qt3DRender::QPickEvent *event)
{
Qt3DCore::QEntity *pressedEntity = qobject_cast<Qt3DCore::QEntity *>(sender()->parent());
if (!pressedEntity && !pressedEntity->isEnabled())
return;
qDebug() << "Pressed Entity Name: "<< pressedEntity->objectName();
qDebug() << "Global Coord: " << event->worldIntersection();
}
但是,令我惊讶的是,鼠标移动(悬停(事件不起作用。以下插槽函数不记录任何内容。另外,当我在此插槽放置调试器断点时,我看到根本没有调用它:
void MyScene::handlePickerMove(Qt3DRender::QPickEvent *event)
{
qDebug() << "Hover Intersection:" << event->worldIntersection();
}
我错过了什么吗?
我的Qt3D渲染设置是:
m_renderSettings = new Qt3DRender::QRenderSettings();
m_renderSettings->pickingSettings()->setPickMethod(Qt3DRender::QPickingSettings::TrianglePicking);
m_renderSettings->pickingSettings()->setPickResultMode(Qt3DRender::QPickingSettings::NearestPick);
m_renderSettings->setObjectName(QStringLiteral("__internal Scene frame graph"));
m_renderer = new Qt3DExtras::QForwardRenderer();
m_renderer->setClearColor(QColor("#c8c8c8"));
m_renderSettings->setActiveFrameGraph(m_renderer);
m_renderSettings->setRenderPolicy(Qt3DRender::QRenderSettings::RenderPolicy::OnDemand);
m_rootEntity->addComponent(m_renderSettings);
m_rootEntity->addComponent(new Qt3DInput::QInputSettings());
更新
与本报告有关。
moved
信号的描述说:"当 pickAttribute 属性定义的边界体积与按下按钮的鼠标移动中的射线相交时,将发出此信号"。
因此,此信号不是在悬停/鼠标移动时发出的,而是在按下鼠标按钮时发出的。
相关文章:
- 跟踪滚动条上的鼠标事件
- 如何通过拖动鼠标QT检查按钮?鼠标移动事件
- 我在QChartView中找不到缩放图形的鼠标滚轮滚动事件
- Qt应用程序不响应鼠标和键盘事件
- Qt将鼠标移动事件转移到新窗口
- Qt-如何在Qt3DWindow上获取鼠标事件
- Qt:如何防止为平板电脑事件生成鼠标事件
- 如何使用 c++ mfc 在屏幕上获取鼠标事件
- WM_PAINT和鼠标事件.MFC/WIN32 API.
- 如何解决:自定义QGraphics项目接收鼠标新闻事件坐标延迟/滞后?
- 覆盖Qt的鼠标按下事件中断移动事件参数
- Qt 如何使用鼠标移动事件移动视图
- 触发鼠标按下事件,但不触发鼠标移动事件
- 通过鼠标事件传递数据
- 鼠标区域窃取QQuickItem的鼠标事件
- 跟踪鼠标输入事件
- Windows Console API鼠标事件只是进入选择模式
- 无法跟踪鼠标事件 OpenCV
- Qt. 忽略小部件中的任何鼠标事件,而不是另一个小部件
- WXWIDGETS将鼠标事件连接到WXPAINTDC上的形状对象以删除