如何调整Qt的窗体类

如何调整Qt的窗体类

问题描述:

内一个OpenGL插件我有一个QVBoxLayoutverticalLayout_2)内一个OpenGL窗口小部件(myWidget),在Qt的窗体类(MyForm)。如何调整Qt的窗体类

我想调整的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? 
} 

您不应该编写任何代码来自动调整您的子窗口小部件的大小。 (另外,changeEvent()不是这个用途的正确事件处理程序。)

您的问题可能与您使用Qt Designer创建的布局有关。你可能拖累从侧边栏垂直布局到您的表单控件,这实际上是不创建一个顶级布局。犯这个错误很容易。

相反,做下列操作之一在Qt Designer中创建顶级布局:

  • 右键单击在Object Inspector您的顶级(形式)小部件,并选择其中一个“布局”菜单中的布局。

  • 选择顶级窗口部件,然后单击工具栏中的布局图标之一:

    qt designe r toolbar

如果您设置布局(S)正确,你不需要添加任何代码。如果您在Qt Designer中预览表单,您的布局将自动更新。

+0

谢谢@jmk,我通过选择“铺陈 - >奠定了在网格中”解决问题后,用右键单击表格,从Qt设计。现在,表单会自动调整大小而不使用changeEvent方法。 – Mikael 2013-03-25 08:26:48