QDockWidget単一の 内にいくつかの s (フローティングではなく、閉じることのみ可能) がありQWidgetます。それぞれの中にいくつかのウィジェットがありますQDockWidget-それらの高さは等しくなければなりません。これらの内部ウィジェットは、コンテキスト メニューから非表示にすることができます。
内部ウィジェットの高さは同じにする必要があります。私はこのようにしました:
void MyDocksPanel::redistributeSpace()
{
QBoxLayout * lay = (QBoxLayout *)layout();
for (int i = 0; i < lay->count(); i++)
{
QWidget * dock = lay->itemAt(i)->widget();
if (dock == NULL)
continue;
int size = 0;
foreach(QWidget * subWidget, dock->findChildren<QWidget*>())
size += subWidget->isVisible() ? 1 : 0;
if (dock->isVisible() && (size == 0))
dock->hide();
lay->setStretch(i, size);
}
}
const 要素をそれぞれに追加するまで、すべて正常に機能しますQDockWidget。水平スクロールバーとラベルがいくつかあります...これで、内部ウィジェットのサイズが異なります。しかし、それらの高さを厳密に等しくする必要があります。
QLayoutウィジェットの階層の 1 つのレベルでウィジェットのサイズをレイアウトします。高さが等しいサブウィジェットを作成するにはどうすればよいですか?
3 つのサブウィジェットと 2 つのサブウィジェット

ストレッチ 3 と 2 を設定する最初の戦略:

しかし、スクロールバーを追加したとき:

私の 5 つのウィジェットの高さは 37,37,37,28,28 に等しい...そしてそれが問題です