2012-08-27 2 views
2

QMainWindow가있는 응용 프로그램이 있습니다.이 응용 프로그램의 중심에 QGLWidget이 있고, 도구 모음 및 기타 상단/측면 위젯을위한 외부 공간이 있어야합니다.내 qt centralWidget (QGLWidget)이 제대로 크기를 조정하지 않습니까?

불행히도 QGLWidget이 어떤 크기 나 형상으로 설정 되든 관계없이 엄청난 것으로 보이며 전체 메인 창을 차지합니다!

기본적으로 설정은 다음과 같습니다. CreateWindow()는 main()에서 호출되며 기본 창을 구성하고 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을 확장하는 올바른 방법은 무엇입니까? 아니면 내가 어떻게 더 깊이 조사해야 할 것인가가 문제가 되는가?

+1

'minimumSize()'/'maximumSize()'를 가지고 놀아 보았습니다. 당신이 전혀 제어 할 수 있는지 알아 보았습니까? – ChiefTwoPencils

답변

2

레이아웃을 추가해야합니다. 나는 부모가 resize 함수를 호출하는 똑같은 것을 가지고있다. (QGLWidget에서 파생 된 위젯). 이 모든 문제를 해결하고 런타임에 크기를 변경할 수있는 곳으로 만들었습니다.

+0

흥미롭게도 q3 위젯을 사용하여 이전 코드의 레이아웃을 추가해야 할 필요가없는 것처럼 보였습니다. 도와 주셔서 감사합니다! – nicole

관련 문제