2008-10-24 4 views
12

복잡한 대화 상자가 있는데 공백으로 가득 차서 축소 할 수 없습니다. 디자이너에는 동적으로 숨겨진 많은 구성 요소와 동적으로 추가되는 구성 요소가 있습니다. 크기 정책, 크기 힌트 및 최소 크기의 덤핑을 추가했지만 Qt가 왜 더 작은 크기로 드래그하지 못하게하는지 알 수 없습니다.Qt 레이아웃 문제를 디버그하는 방법

이 문제를 해결하는 데 필요한 몇 가지 도구 또는 기술이 있어야합니다.

공유하십시오.

답변

4

이 작업을 수행하는 데 필요한 도구가 무엇인지 모르겠지만 대화 상자의 여러 요소 팔레트를 변경 한 다음 예상보다 많은 (또는 적은) 공간을 차지하고 있는지 확인하여 관리했습니다. , 그리고 그 요소들에 대한 조사에 집중했다.

보다 일반적인 의미에서 고정 크기가 아닌 대화 상자를 설정했는지 확인하십시오. 저도 한 번 그 비트.

1

우리는 Firebug의 요소 및 CSS 메트릭 검사기 모드와 동등한 소리가납니다. 그러한 도구의 가장 어려운 부분은 효과적으로 개별 레이아웃 정책이 위젯에서 주어진 크기 값을 사용하거나 사용하지 않는 이유를 알아 내고 전달하는 것입니다.

1

레이아웃을 보지 않고도 말하기는 어렵지만 QGridLayout을 사용하여 설명하는 것처럼 크기 조정 문제가 많이 발생합니다. 열 또는 행에서 가장 큰 것은 해당 열의 최소 너비를 결정합니다. 행에 대해서도 마찬가지입니다.

QGridLayout을 사용하는 경우 span columns/rows을 만들 수도 있습니다.

또한 디자이너의 다양한 레이아웃 구성을 시도하고 크기를 조정하여 테스트하는 것이 좋습니다. 우리는 실제로 내가 일하는 곳에 디자이너를 사용하지 않지만, 레이아웃 아이디어를 테스트하고 디버그하기 위해 항상 사용합니다.

3

QApplication :: focusChanged (QWidget *, QWidget *) 신호를 캡처하고 현재 포커스가있는 위젯의 배경을 변경할 수 있습니다. 나는 이것이 각각의 위젯이 얼마나 많은 공간을 차지하고 있는지를 결정하는데 도움이 될 것이라고 생각한다.

0

많은 시행 착오. 나는 전략적 장소에 뻗기를 삽입하면 종종 내가 원하는 효과를 만들어내는 데 도움이된다는 것을 발견했다. 당신이 레이아웃의 내용 마진을 설정할 수 있습니다 잊지 마세요, 또한

 

QHBoxLayout* layout = new QHBoxLayout; 
QPushButton* myBtn = new QPushButton("Test"); 

layout->insertStretch(1); 
layout->addWidget(myBtn, 0); 
layout->insertStretch(1); 
 

: 나는 레이아웃에 QPushButton을있는 경우 예를 들어, 나는 다음과 같은 일을 할 것입니다 최소 크기로 원하는 setContentsMargins()를 사용합니다.

나는 코드를 가지고 놀 때 레이아웃 시스템을 훨씬 잘 이해한다는 것을 알고 디자이너를 사용하지 않는다.

관련 문제