如何在 Qt 表单类中调整 OpenGL 小部件的大小
Posted
技术标签:
【中文标题】如何在 Qt 表单类中调整 OpenGL 小部件的大小【英文标题】:How to resize an OpenGL widget inside a Qt form class 【发布时间】:2013-03-21 17:30:58 【问题描述】:我在 Qt 表单类 (MyForm
) 的 QVBoxLayout
(verticalLayout_2
) 中有一个 OpenGL 小部件 (myWidget
)。
当窗体调整大小后,我想调整 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?
【问题讨论】:
【参考方案1】:您不必编写任何代码来自动调整子窗口小部件的大小。 (另外,changeEvent()
无论如何都不是用于此目的的正确事件处理程序。)
您的问题可能与您使用 Qt Designer 创建的布局有关。您可能将垂直布局从侧边栏拖到表单小部件中,这实际上并没有创建***布局。很容易犯这个错误。
相反,请执行以下操作之一在 Qt Designer 中创建***布局:
右键单击对象检查器中的***(表单)小部件,然后从“布局”菜单中选择一种布局。
选择您的***小部件并单击工具栏中的布局图标之一:
如果您正确设置了布局,则无需添加任何代码。如果您在 Qt Designer 中预览表单,您的布局将自动更新。
【讨论】:
谢谢@jmk,我通过在Qt Designer中右键单击表单后选择“布局->在网格中布局”解决了这个问题。现在表单会自动调整大小而不使用 changeEvent 方法。以上是关于如何在 Qt 表单类中调整 OpenGL 小部件的大小的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Horde3d 和 OpenGL 绘制 Qt 小部件?
如何在Qt Creator中使两个小部件相互连接并相互调整大小[重复]