QScrollAreaでウィジェットを動的に追加および削除しています。スクロールバーが表示される前に同時に最大4つのウィジェットを表示したいとします。つまり、基本的に、私が0-3のウィジェットを持っていて、もう1つを追加すると、スクロール領域が新しい高さに合わせてサイズ変更されます。その後、高さは4ウィジェットのサイズにとどまり、5番目、 ...Qt:最大4つのウィジェットを表示するようにQScrollAreaをリサイズ
現在、私はウィジェットの挿入/削除時に以下のメソッドを呼び出します。
void WidgetList::resizeScrollArea()
{
// height of the first four widgets
int widgetsHeight = 0;
for (int i = 0; i < _widgets.size() && i < 4; ++i)
{
// height of a widget
widgetsHeight += _widgets.at(i)->sizeHint().height();
}
// some leeway to make sure we have some gap between the widgets
_ui->scrollArea->setFixedHeight(widgetsHeight + 5);
}
問題はのsizehint()は常に正しい高さ(時には大きすぎる)ではありませんが、どちらもサイズ()(多くの場合、小さすぎる)であるということです。だから、私のスクロールエリアはしばしば内容にとっては大きすぎますが、時にはうまくいきます。
私のウィジェットの高さがすべて同じではない場合もあります。また、sizeHintが正しいと思われることもありますが、時にはsizeです。
私はsizeHintがウィジェットが持っていたいサイズであることを理解しています。レイアウトがそれに与えるサイズではありませんが、なぜサイズが正しくないのか分かりません。
私はどのようにそれを行うべきであるかに関するアイデアは、最も高く評価されるでしょう。
[この回答](http://stackoverflow.com/a/21265287/1329652)をご覧ください。 –