Qt - QGLWidget - 设置焦点跟随2 QMainWindow之间的鼠标

时间:2012-12-27 02:40:50

标签: qt focus qmainwindow

我从Qt / OpenGL应用程序开始。我有一个第一个QMainWindow,它包含QGLWidget的GLWidget子类(“widget_2”)。此GLWidget呈现图形动画。

在这个QMainWindow的菜单中,我调用第二个QMainWindow,为widget_2的动画设置参数。

除焦点外,每一件作品都很好。当我将鼠标从QWindow移动到另一个时,我希望鼠标跟随鼠标。

我尝试在第一个QMainWindow的构造函数中使用widget_2->setMouseTracking(true),但问题是我在widget_2上使用鼠标进行旋转。因此,当我从第二个QMainWindow移动到第一个时,鼠标在第一个中被很好地捕获,但它可以自动旋转3D场景而无需按下左键。

我也尝试过enterEvent这种方式(Ui_MainWindow是第一个QMainWindow的QObject):

void Ui_MainWindow::enterEvent(QEvent *event)
{
widget_2->setFocus(Qt::OtherFocusReason);
}

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

目前,当我在第二个QMainWindow上并且我加载参数然后我移动到第一个时,我必须单击左键来旋转3D场景并能够按下pushButtons。

我希望焦点跟随鼠标,即当我结束widget_2时,焦点在widget_2而不与已经实现的鼠标旋转功能发生冲突,当我在菜单上时,我不需要点击两次按钮。

我怎么能得到它?

0 个答案:

没有答案