我已经设法通过调用showFullScreen()和showNormal()来打开全屏/关闭QGLWidget,这是我的Qt应用程序的顶层窗口。然而,我想有一个gl窗口衍生自QGLWidget作为一个更复杂的GUI的一部分,父化到另一个主窗口与其他小部件在它(包括另一个glwidget),并有这个"主要"gl窗口能够去全屏和返回按键。我还没有能够找到文档显示我如何做到这一点,任何帮助?
谢谢! !
基本上,您需要有一种方法让嵌套的QGLWidget或它的父类使用QGLWidget的另一个实例调用showFullScreen()。那就有回去的路。
要做到这一点,按下键或鼠标点击,你需要重新实现QKeyEvent和QMouseEvent为所有小部件,将有焦点时,你想要全屏显示和全屏隐藏作为一个可用的选项。
因此,根据你弹出和显示的窗口数量,你可能想让其他窗口也支持一个键来隐藏/显示你的全屏QGLWidget。
下面是一个代码片段,我曾经这样做过,但只与鼠标交互:
void MyWidget::enterEvent(QEvent *)
{
if(this->isFullScreen())
{
textItem->setText("Click again to return");
}
else
textItem->setText("Click for full screen");
// if(!clearTextTimer->isActive())
// clearTextTimer->start();
clearTextTimer->start();
this->update();
}
void MyWidget::mouseReleaseEvent(QMouseEvent *event)
{
static MyWidget * w = 0;
if(pixItem->contains(mapToScene(event->pos()))
&& event->button() != Qt::NoButton
&& w == 0)
{
w = new MyWidget();
w->showFullScreen();
}
else
{
if(this->isMaximized())
this->close();
else
w->close();
delete w;
w = 0;
}
}
您还需要查看grabKeyboard()和releaseKeyboard()。