2017-04-25 1 views
0

제발 도와주세요. Qt 프로젝트에 고전적인 메인 윈도우가 있는데, 이것을 SAME 부품 - 위젯으로 나누고 싶습니다. 첫 번째 부분에는 하나의 위젯이 있어야하고 다른 부분은 비어 있어야합니다. 그리고 그 후, 나중에 내 프로그램에서 다른 위젯을 다른 부분에 추가하려고합니다. 중요 한 것은 메인 윈도우를 같은 크기의 위젯을위한 네 부분으로 나누는 것입니다..메인 윈도우를 4 개의 위젯으로 분할했습니다.

이 코드가 있지만 메인 윈도우를 다른 크기의 네 부분으로 나눕니다. 하나는 크고 다른 하나는 아주 작습니다.

장면에서 [..] -> gameview는 삽입 할 위젯입니다.

참고 : 저는 .ui 파일을 사용하지 않고 모든 것을 수동으로 코딩합니다.

 containter = new QWidget(this); 
     container_layout = new QVBoxLayout; 
     containter2 = new QWidget(this); 
     container_layout2 = new QVBoxLayout; 
     central = new QWidget(this); 


     splitter1->addWidget(scenes[0]->gameview); 
     splitter1->addWidget(scenes[1]->gameview); 



     container_layout->addWidget(splitter1); 
     containter->setLayout(container_layout); 

     splitter2->setOrientation(Qt::Vertical); 
     splitter2->addWidget(containter); 
     if(number_of_scenes == 3) 
     { 

      splitter3->addWidget(scenes[2]->gameview); 
      splitter3->addWidget(new QWidget); 
      container_layout2->addWidget(splitter3); 
      containter2->setLayout(container_layout); 
     } 
     else if(number_of_scenes == 4) 
     { 

      splitter3->addWidget(scenes[2]->gameview); 
      splitter3->addWidget(scenes[3]->gameview); 
      container_layout2->addWidget(splitter3); 
      containter2->setLayout(container_layout); 
     } 
     else 
     { 

      splitter3->addWidget(new QWidget); 
      splitter3->addWidget(new QWidget); 
      container_layout2->addWidget(splitter3); 
      containter2->setLayout(container_layout); 
     } 

     splitter2->addWidget(containter2); 
     layoutt->addWidget(splitter2); 

     central->setLayout(layoutt); 
     setCentralWidget(central); 
+1

[QGridLayout] (https://doc.qt.io/qt-5/qgridlayout.html)을 살펴보십시오. 키워드는'stretchFactor'입니다. 이 요소를 사용하면 레이아웃에서 한 요소의 비례 공간을 정의 할 수 있습니다. – Felix

답변

관련 문제