【问题标题】:How to resize an OpenGL widget inside a Qt form class如何在 Qt 表单类中调整 OpenGL 小部件的大小
【发布时间】: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?
}

【问题讨论】:

    标签: qt opengl resize widget qglwidget


    【解决方案1】:

    您不必编写任何代码来自动调整子窗口小部件的大小。 (另外,changeEvent() 无论如何都不是用于此目的的正确事件处理程序。)

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

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

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

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

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

    【讨论】:

    • 谢谢@jmk,我通过在Qt Designer中右键单击表单后选择“布局->在网格中布局”解决了这个问题。现在表单会自动调整大小而不使用 changeEvent 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多