2014-12-20 2 views
0

왼쪽의 ListWidget과 오른쪽의 VBoxLayout 안에 다양한 위젯 (TextEdit 및 LineEdit 포함)이있는 대화 상자가 있습니다. ListWidget과 VBox 사이에는 스플리터가 있습니다. 다음은 UI 코드 (마이너스 몇 가지 속성 정의)입니다 : 사용자가 오른쪽으로 대화를 뻗어 경우Qt Creator에서 위젯을 어떻게 고정시킬 수 있습니까?

<?xml version="1.0" encoding="UTF-8"?> 
<ui version="4.0"> 
<class>Dialog</class> 
<widget class="QDialog" name="Dialog"> 
    <property name="geometry"> 
    <rect> 
    <x>0</x> 
    <y>0</y> 
    <width>701</width> 
    <height>586</height> 
    </rect> 
    </property> 
    <widget class="QSplitter" name="splitter"> 
    <property name="geometry"> 
    <rect> 
    <x>10</x> 
    <y>12</y> 
    <width>681</width> 
    <height>561</height> 
    </rect> 
    </property> 
    <property name="orientation"> 
    <enum>Qt::Horizontal</enum> 
    </property> 
    <widget class="QListWidget" name="keysListWidget"> 
    </widget> 
    <widget class="QWidget" name=""> 
    <layout class="QVBoxLayout" name="verticalLayout"> 
    <item> 
     <layout class="QHBoxLayout" name="horizontalLayout"> 
     <item> 
     <spacer name="horizontalSpacer"> 
     <property name="orientation"> 
      <enum>Qt::Horizontal</enum> 
     </property> 
     </spacer> 
     </item> 
     <item> 
     <widget class="QPushButton" name="deleteButton"> 
     <property name="text"> 
      <string>Delete</string> 
     </property> 
     </widget> 
     </item> 
     <item> 
     <widget class="QPushButton" name="saveNewButton"> 
     <property name="text"> 
      <string>Save New</string> 
     </property> 
     </widget> 
     </item> 
     <item> 
     <widget class="QPushButton" name="saveChangesButton"> 
     <property name="text"> 
      <string>Update</string> 
     </property> 
     </widget> 
     </item> 
     </layout> 
    </item> 
    <item> 
     <widget class="QLineEdit" name="keyLineEdit"> 
     </widget> 
    </item> 
    <item> 
     <widget class="QPlainTextEdit" name="valueTextEdit"> 
     </widget> 
    </item> 
    </layout> 
    </widget> 
    </widget> 
</widget> 
<resources/> 
<connections/> 
</ui> 

, 나는 대화 상자의 오른쪽 (동안 ListWidget의 크기에 고정 유지하는 중 VBOX 싶습니다 변경되지 않음). 그리고 사용자가 대화 상자를 아래로 늘리면 ListWidget과 VBox가 모두 대화 상자의 상단과 하단에 고정되어 있어야합니다. 즉, 둘 다 늘리 길 원합니다.

지금 당장 대화 상자를 오른쪽이나 아래로 잡아도 위젯 크기에는 아무런 영향이 없습니다.

답변

2

상단 위젯에 레이아웃을 추가해야합니다. 가장 바깥 쪽 위젯 (대화 상자)을 마우스 오른쪽 버튼으로 클릭하고 "레이아웃"을 선택하고 적절한 레이아웃을 선택해야합니다 (그리드 레이아웃이 좋을 것입니다). 이렇게하면 Dialog의 직접 자식이 크기 변경에 반응 할 것입니다.

ListWidget을 가로로 늘리지 못하도록 최대 너비를 설정할 수 있습니다 (디자이너의 maximumSize 속성).

+0

응답 해 주셔서 감사합니다. 당신이 제안한 모든 것이 도움이되었습니다. 내가 아직 놓치지 않은 유일한 부분은 ListWidget과 (VBox의) 위젯 사이에 스플리터를 추가하는 것이다. –

+0

다음은 궁극적으로 GUI를 배치 한 방법입니다. (1) 버튼을 선택하고 수평으로 그룹화했습니다. (2) 선택된 버튼 그룹, 버튼 아래의 줄 바로 가기, 줄 편집 아래의 텍스트 편집을 세로로 세 그룹으로 묶었습니다. (3) 선택된 VBox + ListWidget을 스플리터로 수평으로 그룹화합니다. (4) 모든 것을 선택 해제했다. 전체 양식을 세로로 그룹화했다. –

관련 문제