창 크기에 따라 Qt 위젯을 늘리는 방법은 무엇입니까?


89

QFormLayout부모 위젯을 채우기 위해 커지는 작은 것을 갖고 싶습니다 .

Qt Designer 의 템플릿을 사용하여 새 .ui 파일을 만들었습니다 QWidget. 나는 QFormLayout그 '창'안에 넣은 다음 그 안에 몇 가지 컨트롤을 넣습니다 QFormLayout.

이것은 모두 합리적으로 잘 작동하지만 QFormLayout항상 Qt Designer에서 설정 한 크기로 유지됩니다. QFormLayout부모 위젯을 채우고 확장 / 축소하고 싶습니다 .

어떻게 할 수 있습니까?

답변:


130

Designer에서 centralWidget을 활성화하고 수평 또는 수직 레이아웃과 같은 레이아웃을 할당하십시오. 그러면 QFormLayout이 자동으로 크기가 조정됩니다.

디자이너 이미지

항상 모든 위젯에 레이아웃이 있는지 확인하십시오! 그렇지 않으면 자동 크기 조정이 해당 위젯으로 중단됩니다!

또한보십시오

컨트롤이 QtDesigner에서 너무 커야한다고 주장하고 크기가 조정되지 않습니다.


13
QtDesigner는 때때로 약간 혼란 스러울 수 있습니다.
bastibe

30
오, 감사합니다! :-) 나는 30 분 동안 QtDesigner (글쎄요, QtCreator, 거기에도 똑같은 것)를 쳐다 봤는데 왜 내 중앙 위젯이 최대 크기로 조정되지 않는지 알 수 없었습니다. 답변에서 원 안에 빨간색 '비활성화'표시가 있습니다. 크리에이터 툴바에서 '세로 레이아웃'버튼을 한 번 클릭하면 문제가 해결됩니다. 처음 I 통지 그 도구 모음 BTW, 쉽게 간과 ...
SSC

8
Jens 답변에 대한 의견을 남기려면 : Mac에서 최상위 위젯 ( "centralWidget"이라는 이름이 반드시 필요하지 않음)을 클릭 한 다음 메뉴 모음에서 "Form"을 클릭하고 레이아웃 중 하나를 선택합니다.
hnasarat

2
여전히 궁금한 사람이 있다면 Windows에서 QT5.8 / QT Creator 4.2.1의 최상위 "centralWidget"(작은 빨간색 표시가 있음)을 클릭 한 다음 도구> 양식 편집기> 레이아웃으로 이동하여 수행합니다. 수직 (또는 수평).
LeoR

41

중앙 위젯 아래에 최소한 하나의 자식을 추가 할 때까지 레이아웃을 중앙 위젯에 할당하는 것이 불가능하다는 것을 알았습니다. 그런 다음 빨간색 '비활성화 됨'표시가있는 작은 아이콘을 강조 표시 한 다음 상단의 디자이너 도구 모음에서 레이아웃을 클릭 할 수 있습니다.


4
이것은 미친 짓입니다. 중앙 위젯 레이아웃을 할당하면 해야 Qt는 창조주의 가장 사소한 동작합니다. 대신 이렇게하려면이 매우 비 직관적 인 솔루션을 Jens똑같이 직관적이지 않은 솔루션 ( 정확한 순서로 ) 과 결합해야합니다 . Qt Creator가 제공하는 자동화는 여전히 반복되는 상용구를 크게 앞 지르고 있지만, 끔찍한 사용자 경험 (UX)을 해킹하는 것은 저에게 새로운 시선을 사로 잡았습니다.
Cecil Curry

@Cecil Curry 그 솔루션 이후에도 내가 무엇을해야하는지 깨닫는 데 20 분이 걸렸습니다 ... 레이아웃을 추가 할 컨텍스트 메뉴 옵션이없는 경우에만 centralWidget ... 거의 비활성 상태 인 것처럼 보이는 도구 모음의 모방 적 버튼 만 있기 때문입니다.
Swift-Friday Pie

3
여기에서 해결책을 찾은 후에도 옵션을 찾는 데 어려움이 있었기 때문에이 의견을 작성했습니다. centralWidget을 선택한 다음 앱의 여유 공간을 마우스 오른쪽 버튼으로 클릭하고 열린 컨텍스트 메뉴에서 '레이아웃'으로 이동 한 다음 원하는 레이아웃을 선택해야합니다. 이것은 적어도 나를 위해 일했습니다 (QT5, QT Designer 5.11.1 사용).
kushy

11

받아 들여지는 대답 (이미지)은 적어도 지금은 QT5에서 잘못되었습니다. 대신 루트 개체 / 위젯에 레이아웃을 할당해야합니다 (앞서 언급 한 이미지를 가리키면 MainWindow대신 이어야합니다 centralWidget). 또한 QObject이 작업을 수행하려면 그 아래에 하나 이상의 생성이 있어야합니다. 이렇게하면 UI가 창 크기 조정에 반응합니다.


0

최상위 QWidget 개체의 기본 레이아웃 유형을 나누기 레이아웃 유형에서 다른 레이아웃 유형 (세로 레이아웃, 가로 레이아웃, 격자 레이아웃, 양식 레이아웃)으로 변경해야합니다. 예를 들면 : 여기에 이미지 설명 입력

다음과 같이 :

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.