1

Qtフォームクラス( )の(myWidget)内にOpenGLウィジェット( )があります。QVBoxLayoutverticalLayout_2MyForm

フォームのサイズが変更されたときにOpenGLウィジェットのサイズを変更したい。

QVBoxLayoutとOpenGLウィジェットのサイズを新しいサイズに変更するには、changeEventメソッド内に何を書き込む必要がありますか?

MyForm::MyForm(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MyForm)
{
    ui->setupUi(this);
    myWidget = new GL_Widget;
    ui->verticalLayout_2->addWidget( myWidget );
    adjustSize();
}

void MyForm::changeEvent(QEvent *e)
{
    // What should I write here?
}
4

1 に答える 1

1

子ウィジェットのサイズを自動的に変更するためのコードを記述する必要はありません。(また、changeEvent()とにかくこの目的のための正しいイベントハンドラーではありません。)

問題は、QtDesignerで作成したレイアウトにある可能性があります。おそらく、垂直レイアウトをサイドバーからフォームウィジェットにドラッグしましたが、実際にはトップレベルのレイアウトは作成されません。この間違いを犯すのはとても簡単です。

代わりに、次のいずれかを実行して、QtDesignerでトップレベルのレイアウトを作成します。

  • オブジェクトインスペクターでトップレベル(フォーム)ウィジェットを右クリックし、[レイアウト]メニューからレイアウトの1つを選択します。

  • トップレベルのウィジェットを選択し、ツールバーのレイアウトアイコンの1つをクリックします。

    qtdesignerツールバー

レイアウトを正しく設定すれば、コードを追加する必要はありません。Qt Designerでフォームをプレビューすると、レイアウトが自動的に更新されます。

于 2013-03-21T18:46:47.190 に答える