2010-02-02 3 views
0

trolltech의 몇 가지 예는 간단한 Qt 응용 프로그램의 기본 창으로 QMainWindow가 아닌 ​​QWidget을 사용합니다.창으로 사용할 때 QWidget 크기는 어떻게됩니까?

이제 전체 클라이언트 영역을 다루는 단일 콘텐츠 위젯 (QGlWidget)이있는 간단한 창이 필요합니다.

그러나 단일 내용 창이있는 QWidget 창을 표시하면 크기가 자동으로 작아집니다.

자식없이 QWidget 부모 창을 만드는 경우 아주 큰 기본 크기입니다.

나는 하나의 자식 창에 대한 레이아웃을 사용하여에 의존하고 싶지 않은 :/

답변

3

내가 이해하는 것은 당신이 당신의 QGIWidget를 표시 할 수는 QWidget을 사용하는 것입니다. QGIWidget의 show 메소드를 직접 호출 해보십시오 (QGIWidget 클래스가 QWidget을 상속받는 경우), Qt가 윈도우 장식을 생성합니다.

그렇지 않으면 실제로 위젯이 서로 들어가서 크기가 맞으면 레이아웃을 사용해야합니다.

+0

Im 조금 혼란스러워. 확실한 것은 QWidget을 컨테이너로 사용하고 QButton을 추가하는 간단한 예제가 있다는 것입니다. 그러면 QWidget이 올바르게 크기가 조정됩니다. 어떤 종류의 크기 조정 논리가 호출되고 있습니다. 빈 QWidget을 만들면 적당한 크기로 만듭니다. 그것이 바로 QGlWidget이라는 자식을 만들 때 정말 작게 만듭니다. 그러나 지금은 귀하의 제안과 함께 가고 단순히 QGlWidget을 최상위 위젯으로 사용하십시오. –

2

gregseth의 조언을 따르거나 단순히 위젯의 크기를 직접 조정할 수 있습니다. 귀하의 경우에는

(당신이 레이아웃을 사용할 때 Qt는에 의해 제공됩니다 좋은 자동 크기 조정을 풀 수 있습니다이 방법은하지만) 당신은 기본적으로 같은 것을 할 수 : 실제로

QGlWidget* myWidget = new QGlWidget; 
myWidget->resize(QApplication::desktopWidget()->availableGeometry().size()); 

// or maybe instead of resizing show it in fullscreen: 
myWidget->showFullScreen(); 

(난 몰라 showFullScreen()는 당신을 위해 크기를 조정하지 않을 경우, 어쩌면 당신이

건배 :)

PS) : 모두 + showFullScreen의 크기를 조정해야합니다 기억 레이아웃을 사용하는 것은 실제로 옵션입니다. 비싸지 않고 유연합니다. 모두 가져옵니다 : "layout = new QVBoxLayout (myWidget); layout-> addWidget (myWidget);" 그리고 끝났어.

0

항상 그렇지는 않다.

QVBoxLayout 및 QHBoxLayout을 사용하여 하위 위젯을 배열 할 때 QMainWindow가 상위 위젯으로 작동하지 않는다는 것을 발견했습니다.

QWidget을 만들어서 QMainWindow 대신 사용하면 레이아웃이 올바르게 작동합니다. 당신이 QtCreator를 사용하여 코드를 보면

QWidget* centralWidget = new QWidget(MainWindow); 
MainWindow->setCentralWidget(centralWidget); 

은 당신이 최상위 수준에 직접 레이아웃을 사용하려고하면 그것은 '숨겨진'위젯을 만들어 볼 수 있습니다 만듭니다.

어디서나 내가봤을 때 분명하지 않고, 직관적이거나, 문서화되지 않았습니다.

관련 문제