2010-04-06 2 views
1

나는 다음 Qt는 코드가 : 레이블Qt는 레이아웃 문제

QVBoxLayout* box = new QVBoxLayout; 
label = new QLabel(); // will be set later dynamically 
box->addWidget (label); 

텍스트 나중에 설정됩니다. 문제는 레이블 크기가 조정될 때 QVBoxLayout의 크기를 조정하고 다른 인접 위젯의 크기를 조정한다는 것입니다. 레이블이나 레이아웃을 고정 너비로 ​​만들고 싶지 않습니다. 왜냐하면 나는 그 (것)들을 전체 창으로 사이즈를 바꾸기 원하기 때문이다.

위젯이 레이아웃에있는 모든 장소를 차지하도록 말할 수 있습니까?

+1

완전한 예를 제공 할 수 있습니까? – baysmith

답변

0

maximumSize을 설정하거나 sizePolicy을 볼 수 있습니다.

+0

내가 말했듯이 최대 크기를 설정하고 싶지는 않습니다. 이전에 크기 정책을 자세히 살펴 보았지만이를 사용하는 방법을 모릅니다. –

0

레이아웃을 배치 할 주 윈도우에 늘일 인수 (setStrechFactor)를 설정해야한다고 생각합니다.

- void setScaledContents(bool) 
- void setWordWrap(bool on) 

나는 그것이 귀하의 요구 사항에 맞는 희망 :

+0

좋은 아이디어. 나는 기본 레이아웃의 상자 및 기타 위젯을 0으로 설정합니다. 효과가 없습니다. ( –

+0

스트레치 계수를 0으로 설정한다는 것은 레이아웃 위주가 다른 위젯에 따라 자동 계산된다는 것을 의미합니다. 예를 들어 누름 단추와 레이블이있는 경우 레이아웃에서 각 요소에 대해 stretch factor를 0으로 설정하면 각 위젯의 크기가 자동으로 지정됩니다. 100 : 1로 설정하면 스트레치 요소로 위젯 크기의 비율이 100 %가됩니다 – alisami

0

은 아마 당신은 다음과 같은 방법을 살펴 가질 수있다!

1

size policy 위젯을 수정하려고 시도 했습니까? 당신은 이것으로 원하는 것을 성취 할 수 있습니다. , http://qt.nokia.com/doc/4.6/qsizepolicy.html#Policy-enum

+0

정책은 내가 원하는 것을 성취합니까? –

+0

QSizePolicy :: Maximum 정책을 사용하고 레이블의 sizeHint를 레이아웃 공간 크기로 설정합니다. 그러면 레이블은 레이아웃에있는 공간으로 제한됩니다. –

0

의 Łukasz을 당신이 레이블이 한 줄에 모든 시간의 공간을 채우기 위해 원하는 것을 제대로 이해하지 :

여기에 모든 크기의 정책은? 텍스트가 하나 개의 라인 인 경우 즉, 그렇다면, 그 해결책은 다음과 같습니다

QVBoxLayout* box = new QVBoxLayout;
label = new QLabel(" "); // The space will create a vertical space in the layout
box->addWidget (label);

은 "빈"레이블이 지금 정확히이 텍스트를 설정 한 후 것 같은 동작합니다.

하지만 나는 당신의 질문을 진정으로 이해할 수 있을지 확신하지 못합니다. 좀 더 구체적으로 할 수 있습니까, 아니면 달성하려는 화면을 제공 할 수 있습니까?