如何调整Qt的窗体类
问题描述:
内一个OpenGL插件我有一个QVBoxLayout
(verticalLayout_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您的顶级(形式)小部件,并选择其中一个“布局”菜单中的布局。
-
选择顶级窗口部件,然后单击工具栏中的布局图标之一:
如果您设置布局(S)正确,你不需要添加任何代码。如果您在Qt Designer中预览表单,您的布局将自动更新。
谢谢@jmk,我通过选择“铺陈 - >奠定了在网格中”解决问题后,用右键单击表格,从Qt设计。现在,表单会自动调整大小而不使用changeEvent方法。 – Mikael 2013-03-25 08:26:48