2009-11-06 8 views
2

입니다. 내 Qt 퀘스트를 읽지 않은 사용자는 프로젝트에 대해 Qt를 배우고 있습니다. Qt가 아닌 GUI 디자인에 대한 경험이 제한적입니다.Qt QHboxLayout 셀 크기는

몇 가지 버튼을 채우려는 가로 레이아웃이 있습니다. 이 버튼을 잘 먹일 수는 있지만, 이전의 사각형 버튼은 수평으로 잡아 당겨 더 많은 공간을 차지합니다.

레이아웃 관리자가이 버튼의 크기를 조정하는 가장 좋은 방법을 결정하도록하고 싶지만 원래 비율은 그대로 유지하고 싶습니다. 예를 들어 레이아웃에 모두 들어 맞도록 축소해야하는 32X32 버튼을 시작하면 폭과 높이 사이의 비율이 유지되도록 비례 적으로 축소해야합니다. 20X20, 16X16, 12X12 모두 괜찮을 것이지만 24X16은 허용 할 수없는 치수의 예입니다.

버튼과 스트레치 옵션에 대한 크기 정책을 고수했습니다. QPushButton 및 QHboxLayout 클래스를 읽은 후에도이를 수행하는 방법을 알지 못합니다. 그것은 어떻게 성취됩니까?

감사합니다.

답변

2

질문을 올바르게 이해하는 한 내가 원하는 것은 QBoxLayout::addStretch()입니다. 그러면 사용되지 않은 공간을 채우는 스페이서 객체가 추가됩니다. 그래서 버튼은 이상적인 크기를 가지며 스페이서가 나머지를 채 웁니다. Designer에서 이것을 실험 해 볼 수 있습니다. 쓰기/컴파일/실행주기보다 쉽습니다.

+0

/버튼 등 취소 self.horizontalLayout.addWidget (self.checkBox) self.horizontalLayout.addStretch() self.horizontalLayout.addWidget를 (self.buttonBox) – gseattle

+0

상당한 시간이 지난 후에 Qt로 더 많은 작업을 해보았으며 이것은 분명 더 나은 해결책입니다. 이 질문은 오늘날 "대중적인 질문"이기 때문에 오늘 제 관심을 끌었습니다. 그래서 나는 그것을 검토하고 답을 받아 들일 수있는 기회를 갖게되었습니다. –

2

this question에 대한 답변을 살펴보십시오. 이것은 내 대답을 요약 한 것입니다.

가로 세로 비율을 유지하려면 bool hasHeightForWidth() 및 을 무시하는 QLayoutItem의 사용자 지정 파생물을 만들어야합니다. 버튼을 건네거나 질의 할 수도 있고, 비율을 직접 설정할 수도 있습니다. 또한 widget() 함수가 적절한 버튼에 대한 포인터를 반환하는지 확인해야합니다.

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

나는 실제로 이것을 테스트하지 않았으므로 이론적 인 해결책입니다. 원하는 경우 디자이너를 통해이 솔루션을 수행 할 방법을 모르겠습니다. 확인의 왼쪽에 '쇼 다시'체크 박스 나를 위해 그것을 해결

+0

실제로 QToolButton을 사용하여 원하는 동작을 얻었습니다. QToolButton은 본질적으로 내가 원했던 것입니다.하지만이 답변은 앞으로 갈 길입니다. 감사. –