我有一个带有 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 的正确方法是什么?或者这只是我需要更深入研究的事情如何排序的问题?
最佳答案
您需要为其添加布局。我有完全相同的东西(一个从 QGLWidget 派生的小部件),其父级调用调整大小函数。这解决了我的所有问题,并使我可以在运行时更改其大小。
关于c++ - 为什么我的 qtcentralWidget(QGLWidget)无法正确调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12149471/