Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调整Qt表单类中OpenGL小部件的大小_Qt_Opengl_Resize_Widget_Qglwidget - Fatal编程技术网

如何调整Qt表单类中OpenGL小部件的大小

如何调整Qt表单类中OpenGL小部件的大小,qt,opengl,resize,widget,qglwidget,Qt,Opengl,Resize,Widget,Qglwidget,我在Qt表单类(MyForm)的QVBoxLayout(verticalLayout\u 2)中有一个OpenGL小部件(myWidget) 我想在窗体调整大小后调整OpenGL小部件的大小 要将QVBoxLayout和OpenGL小部件的大小调整为新的大小,我应该在changeEvent方法中写些什么 MyForm::MyForm(QWidget *parent) : QDialog(parent), ui(new Ui::MyForm) { ui->setupU

我在Qt表单类(
MyForm
)的
QVBoxLayout
verticalLayout\u 2
)中有一个OpenGL小部件(
myWidget

我想在窗体调整大小后调整OpenGL小部件的大小

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

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中创建顶级布局:

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

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


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

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

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

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

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

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


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

谢谢@jmk,我在Qt Designer中右键单击表单后选择“布局->网格布局”解决了这个问题。现在,表单自动调整大小,而不使用changeEvent方法。谢谢@jmk,我在Qt设计器中右键单击表单后选择“布局->网格布局”解决了这个问题。现在,表单将自动调整大小,而无需使用changeEvent方法。