当父窗口到其他窗口时,将QGLWidget全屏



我已经设法通过调用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()。

相关内容

  • 没有找到相关文章

最新更新