QVBoxLayout の全体的なレイアウトを持つカスタム ウィジェットがあります。いくつかのラベル、QFormLayout、ボタン、およびすべての余分なスペースを占有するためのストレッチが含まれています。ラベルの 1 つが非常に大きくなる可能性があるため、テキストが読めない奇妙なケースがないようにしています。ウィジェットは QScrollArea 内に含まれており、ユーザーがウィンドウ全体を縮小してもウィジェットのすべての側面が表示されるようになっています。
QLabel は問題なくサイズ変更されているように見えますが、特定の狭さのポイントに達すると、ラベルの下部の数行が切り取られ、ウィジェットの下部にあるストレッチにスペースが割り当てられます。
Designer を使用せずにコードでこれをすべて行っているため、何かが不足している可能性は十分にあります。サブコンポーネントは、次の順序で QVBoxLayout 全体に追加されます。
OverallLayout = new QVBoxLayout(this);
Title = new QLabel();
Description = new QLabel();
SubRegion = new QFormLayout();
Button = new QButton();
...
// set text values, wordWrap(true), and Font for labels
OverallLayout->addWidget(Title);
OverallLayout->addWidget(Description);
OverallLayout->addLayout(SubRegion);
OverallLayout->addStrut(MIN_DIST);
OverallLayout->addWidget(Button);
OverallLayout->addStretch(STRETCH_FACTOR);
テスト結果: QLabel の sizeHint() 関数から返された結果を調べると、ウィジェットが水平方向に縮小されても、返される値は変化していないように見えます。ただし、QLabel は拡大してより多くの垂直方向のスペース (153 対 103 のヒント) を占有しますが、すべてのテキストを収めるには十分ではありません。QLabel が最初に表示されたとき、ピクセルは sizeHint よりも少なくなりますが、heightForWidth の量には十分です。サイズが変更されると、heightForWidth の量より 30 少なくなりますが、sizeHint より多くなります。
確認したところ、大きな QLabel の hasHeightForWidth() と wordWrap() の値が true に設定されています。私は何を間違っていますか?