문제

QT Questoins를 읽지 않은 분들을 위해 프로젝트를 위해 QT를 배우고 있습니다. QT가 아닌 GUI 디자인에 대한 경험이 제한되어 있습니다.

버튼으로 채우고 싶은 수평 레이아웃이 있습니다. 이 버튼을 잘 먹일 수 있지만 이전의 제곱 버튼은 수평으로 뻗어 더 많은 공간을 차지합니다.

레이아웃 관리자 가이 버튼을 크기를 크기로 만드는 가장 좋은 방법을 결정하도록하고 싶지만 원래 비율도 그대로 유지하기를 원합니다. 예를 들어, 레이아웃에서 모든 것을 맞출 수 있도록 수축 해야하는 32x32 버튼으로 시작하면 비례 적으로 축소되어 너비에서 높이 스케일이 유지되도록합니다. 20x20, 16x16, 12x12는 모두 괜찮지 만 24x16은 용납 할 수없는 치수의 예일 것입니다.

버튼과 스트레치 옵션에 크기 정책을 땜질했습니다. QPushButton 및 QhboxLayout 수업을 읽은 후에도이 작업을 수행하는 방법을 보지 못했습니다. 어떻게 성취됩니까?

감사.

도움이 되었습니까?

해결책

질문을 올바르게 이해하는 한, 당신이 원하는 것은 QBoxLayout::addStretch(). 사용하지 않은 공간을 채우는 스페이서 객체가 추가됩니다. 따라서 버튼은 이상적인 크기를 가지며 스페이서는 나머지를 채 웁니다. 디자이너에서 이것을 실험 할 수 있습니다. 쓰기/컴파일/런 사이클보다 쉽습니다.

다른 팁

답을 살펴 봐야합니다 이 질문. 이것은 내 대답의 요약입니다.

Qlayoutitem의 사용자 정의 파생물을 만들어야합니다. bool hasHeightForWidth() 그리고 int heightForWidth( int width ) 종횡비를 보존합니다. 버튼을 전달하고 쿼리하거나 비율을 직접 설정할 수 있습니다. 또한 위젯 () 함수가 적절한 버튼에 대한 포인터를 반환해야합니다.

완료되면 위젯과 같은 방식으로 레이아웃에 레이아웃 항목을 추가 할 수 있습니다. 따라서 버튼이 추가되면 사용자 정의 레이아웃 항목 클래스를 사용하도록 변경하십시오.

나는 실제로 이것을 테스트하지 않았 으므로이 시점에서 이론적 해결책입니다. 디자이너를 통해이 솔루션을 수행하는 방법은 모르겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top