2012-08-27 42 views
2

我有一個QMainWindow的應用程序,理想情況下應該有一個QGLWidget集中在它上面,工具欄和其他頂部/側部件的外部留有空間。爲什麼我的qt centralWidget(一個QGLWidget)不能正確調整大小?

不幸的是,無論QGLWidget設置爲什麼尺寸或幾何形狀,它看起來都很龐大,佔用了整個主窗口!基本上,設置如下:在main()中調用CreateWindow(),它構造主窗口並調用構造GLWidget的函數Init()。因此,內的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的正確方法是什麼?或者這只是一個事情如何訂購的問題,我需要深入研究一下?

+1

你是否嘗試過用'minimumSize()'/'maximumSize()'來查看你是否能夠控制它? – ChiefTwoPencils

回答

2

您需要爲其添加布局。我有完全相同的東西(一個派生自QGLWidget的小部件),它的父級調用了resize函數。這解決了我所有的問題,並將它帶到了我可以在運行時改變其大小的地方。

+0

有趣的是,似乎並不需要爲q3小部件的舊代碼添加布局。謝謝您的幫助! – nicole

相關問題