Qt-GLWidget-get focus在两个qmain窗口之间跟随鼠标

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

我从一个Qt/OpenGL应用程序开始。我有第一个QMainWindow,其中包含QGLWidget的GLWidget子类(“
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;
}