1

我在 Qt 表单类 ( ) 中myWidgetQVBoxLayout( ) 中有一个 OpenGL 小部件 ( )。verticalLayout_2MyForm

我想在调整表单大小时调整 OpenGL 小部件的大小。

我应该在 changeEvent 方法中写什么,以QVBoxLayout将 OpenGL 小部件的大小调整为新大小?

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()无论如何,这不是用于此目的的正确事件处理程序。)

您的问题可能与您使用 Qt Designer 创建的布局有关。您可能将垂直布局从侧边栏拖到表单小部件中,这实际上并没有创建顶级布局。很容易犯这个错误。

相反,请执行以下操作之一以在 Qt Designer 中创建顶级布局:

  • 右键单击对象检查器中的顶级(表单)小部件,然后从“布局”菜单中选择一种布局。

  • 选择您的顶级小部件并单击工具栏中的布局图标之一:

    qt 设计器工具栏

如果您正确设置了布局,则无需添加任何代码。如果您在 Qt Designer 中预览表单,您的布局将自动更新。

于 2013-03-21T18:46:47.190 回答