基本的に、ネストされた QGLWidget またはその親が QGLWidget の別のインスタンスで showFullScreen() を呼び出す方法が必要です。その後、戻る方法があります。
キーの押下またはマウスのクリックでこれを行うには、利用可能なオプションとして全画面表示と全画面非表示が必要な場合にフォーカスを持つすべてのウィジェットに対して QKeyEvent と QMouseEvent を再実装する必要があります。
そのため、ポップアップして GUI の QMainWindow 部分とは別に表示しているウィンドウの数に応じて、フルスクリーン 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() も参照してください。