2

我有一个带有 QMainWindow 的应用程序,理想情况下应该有一个 QGLWidget 以它为中心,在外部留有空间用于工具栏和其他顶部/侧面小部件。

不幸的是,无论 QGLWidget 设置为什么大小或几何形状,它看起来都很大并且占据了整个主窗口!

基本上,设置如下:在main()中调用CreateWindow(),构造主窗口,调用函数Init(),构造GLWidget。因此,在我改编的主窗口类的成员 Init() 中,我基本上有:

GLScene = new MyQGLWidget(this);  
setCentralWidget(GLScene); 

现在,为了使 GLScene 符合其所需的大小和位置,我首先尝试在 GLWidget(也就是我的直接从 GLWidget 派生的类)构造函数中设置它的几何图形:

MyQGLWidget::MyQGLWidget(QWidget* parent){
    ....
    setGeometry(210, 40, 600, 400);  //the main window is of course bigger and should fit this nicely 
    ....
}

然而,这根本不起作用,仍然占据了整个主窗口。相反,我尝试将 setGeometry 调用放入 Init()。我在 setCentralWidget(); 之前和之后都试过了。两种选择都不起作用。也没有完全删除 setCentralWidget 调用(事实上,这使得 GLWidget 消失了)。

既然这显然不能正常工作,那么缩放 GLWidget 的正确方法是什么?还是只是我需要更深入地研究事物的顺序问题?

4

1 回答 1

2

您需要为其添加布局。我有完全相同的东西(从 QGLWidget 派生的小部件),其父级调用 resize 函数。这解决了我所有的问题,并使它可以在运行时更改其大小。

于 2012-08-28T01:00:15.950 回答