为什么我的qt centralWidget(一个QGLWidget)不能正确调整大小?

时间:2012-08-27 20:54:06

标签: c++ qt qglwidget qmainwindow

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

不幸的是,无论QGLWidget设置的大小或几何形状如何,它都显得巨大并占据整个主窗口!

基本上,设置如下:在main()中调用CreateWindow(),它构造主窗口并调用构造GLWidget的函数Init()。所以,在我调整的主窗口类的成员Init()中,我基本上有:

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

现在,为了使GLScene符合其所需的大小和位置,我首先尝试在GLWidget(a.k.a。我的类直接派生自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的正确方法是什么?或者只是我需要更深入地研究事物的顺序问题?

1 个答案:

答案 0 :(得分:2)

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