2

Qt アプリの最上位ウィンドウである QGLWidget に対して showFullScreen() および showNormal() を呼び出すことで、フルスクリーンのオン/オフを切り替えることができました。ただし、より複雑な GUI の一部として QGLWidget から派生した gl ウィンドウを持ち、他のウィジェット (別の glwidget を含む) を含む別のメインウィンドウの親になり、この「プライマリ」gl ウィンドウをフルスクリーンにして、キーストロークで戻ります。これを行う方法を示すドキュメントを見つけることができませんでした。

ありがとう!!

4

1 に答える 1

0

基本的に、ネストされた 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() も参照してください。

于 2012-02-03T00:50:03.977 に答える