layoutStretchプロパティを常に従わせる方法はありますか?たとえば、「1,3,2」に設定しましたが、最初の部分(「1,3,2」の「1」)のウィジェット(ラベル)が展開され(テキストが追加されると)、その場合、1:3:2の配給量は尊重されなくなります。つまり、「1:3:2」の比率は「3:1:3」のようなものになります。
1 に答える
プロパティを確認する必要がありますQWidget::sizePolicy
。sizeHint()
ジオメトリを更新するときに、レイアウトが子をどのように尊重するかを制御します。
したがって、実行する必要があるのは、次のとおりです。3つの子ウィジェットの水平サイズポリシーを次のように設定して、レイアウトに子ウィジェットの水平サイズヒントを無視させますQSizePolicy::Ignored
。
QLabel *label = ...;
...
label->setSizePolicy(QSizePolicy::Ignored, label->sizePolicy().verticalPolicy());
(2番目の引数は、このステートメントによって垂直ポリシーが変更されないようにします。もちろん、すべての子ウィジェットのサイズポリシーを設定する必要があります。このサンプルコードはラベル専用です。)
レイアウトのコンテンツはウィジェットである必要があることに注意してください。ネストされたレイアウトにサイズポリシーを割り当てることはできないと思います(ただし、間違っている可能性があります)。少なくともQtDesignerを使用すると、レイアウト自体にサイズポリシーを適用する方法はありません(ウィジェットのレイアウトでない場合)。詳細についてはコメントを参照してください。
QtDesignerでは、次のように子ウィジェットのsizePolicyを設定できます。
前:
縮小:
レイアウト内のアイテムを選択します:
水平サイズポリシーを「無視」に設定します:
結果: