2017-05-12 19 views
1

를 제거 할 때 I는 (hide(), setVisible() 과 같은 다양한 방법을 통해 QDialog) 대화의 생성자에서 제거 될 수있는 중첩 QGroupBox으로 QDialog이있다. 불행히도 제거하면 대화 상자의 크기가 그대로 유지됩니다. 그것에 대한 재미있는 점은 주 QGroupBox (중첩 된 QGroupBox)이 축소되지만 나머지 창은 줄어들지 않는다는 것입니다. 결과적으로 주 QGroupBox 주위에는 큰 공백이 있습니다.인 QDialog 압축 요소는

이 나는 ​​시도했다 :

QMetaObject::invokeMethod()를 통해 ctor에 에서 QDialog::resize()를 호출
  • 30 (제거 된 QGroupBox의 크기)에 의해 높이를 줄일 수 있지만, 아무것도하지 않습니다.
  • QDialog::adjustSize() (또한 ctor와 QMetaObject::invokeMethod())을 호출하지만 두 가지 크기가 모두 커집니다 (크고 미친 것처럼!).
  • QDialog의 "수직 정책"을 "기본 설정"(의미가 무엇이든)에서 "최소"로 변경하지만 아무 것도 수행하지 않습니다.

QDialog에는 그리드 레이아웃이 있습니다.

편집 : verticalSpacers 위와 아래에 주 QGroupBox이있는 것으로 나타났습니다. 정책과 크기에 대한 힌트를 설정해도 차이는 없습니다. adjustSize()으로 전화를 걸면 전체 창은 여전히 ​​커집니다. 그것들을 제거하면 adjustSize()은 높이를 얻지 만 너비는 여전히 너무 큽니다. 그런 다음 adjustSize()을 호출하지 않고 메인 QGroupBox을 동일한 크기로 유지하고 일부 자식 제거로 인해 축소하지 않습니다.

저는 우분투 16.04에서 Qt 4.8을 사용하고 있습니다.

답변

1

QLayout::SetFixedSize 또는 QLayout::SetMinAndMaxSize을 매개 변수로 사용하여 콘텐츠의 크기에 따라 자동으로 크기를 조정하려면 대화 상자 레이아웃에서 QLayout::setSizeConstraint을 사용할 수 있습니다. 후자는 사용자가 대화 상자의 크기를 조절할 수 있도록합니다.

SetMinAndMaxSize로, 당신은 너무 주요 QGroupBox 레이아웃에 해당 속성을 변경해야 할 수 있습니다, 또는 적어도 Maximum 또는 Fixed에 수직 레이아웃 정책을 설정합니다.