Qt-GLWidget-get focus在两个qmain窗口之间跟随鼠标
我从一个Qt/OpenGL应用程序开始。我有第一个QMainWindow,其中包含QGLWidget的GLWidget子类(“Qt-GLWidget-get focus在两个qmain窗口之间跟随鼠标,qt,focus,qmainwindow,Qt,Focus,Qmainwindow,我从一个Qt/OpenGL应用程序开始。我有第一个QMainWindow,其中包含QGLWidget的GLWidget子类(“widget_2”)。此小部件渲染图形动画 从这个QMainWindow的菜单中,我调用第二个QMainWindow,在这里我为小部件\u 2的动画设置参数 除了焦点之外,其他一切都很好。当我将鼠标从一个QWindow移动到另一个QWindow时,我希望焦点跟随鼠标 我尝试在第一个qmain窗口的构造函数中使用widget_2->setMouseTracking(true
widget_2
”)。此小部件渲染图形动画
从这个QMainWindow的菜单中,我调用第二个QMainWindow,在这里我为小部件\u 2
的动画设置参数
除了焦点之外,其他一切都很好。当我将鼠标从一个QWindow移动到另一个QWindow时,我希望焦点跟随鼠标
我尝试在第一个qmain窗口的构造函数中使用widget_2->setMouseTracking(true)
,但问题是我在widget_2
上使用鼠标进行旋转。因此,当我从第二个QMain窗口移动到第一个QMain窗口时,鼠标在第一个窗口中被很好地捕获,但它使3D场景自动旋转,而无需按左键
我也尝试过以这种方式使用enterEvent
(Ui\u MainWindow是第一个QMainWindow的QObject):
在widget_2
中执行的旋转以以下方式在另一个文件(GLWidget.cpp)中实现:
void GLWidget::mousePressEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton)
{
xdiff = event->x();
ydiff = -event->y();
}
}
void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
yrot = (event->x() - xdiff) / 10.0f;
xrot = (event->y() + ydiff) / 10.0f;
}
当前,当我在第二个Qmain窗口上加载参数,然后移动到第一个时,我必须单击“左”旋转3D场景并能够按下按钮
我希望焦点跟随鼠标,即当我在widget_2
上时,焦点在widget_2
上,与已经实现的鼠标旋转功能没有冲突,当我在菜单上时,我不需要点击两次按钮
我怎么能得到它
void GLWidget::mousePressEvent(QMouseEvent *event)
{
if (event->buttons() & Qt::LeftButton)
{
xdiff = event->x();
ydiff = -event->y();
}
}
void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
yrot = (event->x() - xdiff) / 10.0f;
xrot = (event->y() + ydiff) / 10.0f;
}