2012-05-21 9 views
6

layoutStretchプロパティを常に従うようにする方法はありますか?例えば。私はそれを "1,3,2"に設定しましたが、最初の部分のウィジェット( "1,3,2"の "1")が展開され(さらにテキストが追加されると) 1:3:2の比率はもはや尊重されません。すなわち、「1:3:2」の比率は、「3:1:3」のようなものに変わります。レイアウトのサイズを固定する

答えて

7

プロパティQWidget::sizePolicyをご覧ください。ジオメトリを更新するときにレイアウトがその子のsizeHint()をどのように尊重するかを制御します。

だから、あなたが何をする必要があるかです:レイアウトがQSizePolicy::Ignoredに3つのウィジェットの水平sizePolicyを設定することにより、子ウィジェットの水平sizeHintsを無視してください:

QLabel *label = ...; 
... 
label->setSizePolicy(QSizePolicy::Ignored, label->sizePolicy().verticalPolicy()); 

(2番目の引数がのことを確認します もちろん、すべての子ウィジェットのサイズポリシーを設定する必要があります。この例のコードはラベルのみです。

レイアウトの内容は次のとおりですウィジェット。ネストされたレイアウトにはサイズポリシーを割り当てることはできないと思いますが(間違っているかもしれません)少なくともQtDesignerを使用すると、(それがウィジェットのレイアウトでない場合)レイアウト自体にサイズポリシーを適用する方法がありません。詳細はコメントを参照してください。内の項目を選択し
enter image description here

前:
enter image description here
縮め


はQtDesignerでは、このような子ウィジェットのsizePolicyを設定することができますレイアウト:
enter image description here
水平サイズポリシーを設定するには、「無視」します
enter image description here
結果:
enter image description here

+0

がQtDesignerに私はhorizo​​ntalLayoutウィジェットで3つのオブジェクトある3つのverticalLayoutウィジェットの1をクリック(1:3:2のレイアウトストレッチを持つもの)。ただし、sizePolicyはありません。layoutLeftMargin、layoutTopMargin、layoutRightMargin、layoutBottomMargin、layoutSpacing、layoutStretch、およびlayoutSizeConstraintのみです。 –

+0

@DavidDoria QtDesignerのスクリーンショットを追加しました。 – leemes

+0

申し訳ありませんが、私はまだ明確ではなかったと思います。私は、horizo​​ntalLayoutウィジェットの子であるverticalLayoutウィジェットを持っています。これらのverticalLayoutウィジェットは、比率を固定したいものですが、「sizePolicy」プロパティはありません。 –

関連する問題