2つのレイアウトを含むQtウィンドウを作成したいと思います。1つは上部にボタンのリストを含む固定の高さで、もう1つは下の画像のようにウィジェットを垂直方向と水平方向に中央に配置するレイアウトで残りのスペースを埋めます。
レイアウト/ウィジェットをどのようにレイアウトする必要がありますか。ネストされた水平および垂直レイアウトでいくつかのオプションを試しましたが、役に立ちませんでした
ピンクのボックスを(単にレイアウトにするのではなく)QHBoxLayoutを使用してQWidgetにしてみてください。その理由は、QLayoutsは固定サイズを作成する機能を提供していませんが、QWidgetsは提供しているためです。
// first create the four widgets at the top left,
// and use QWidget::setFixedWidth() on each of them.
// then set up the top widget (composed of the four smaller widgets):
QWidget *topWidget = new QWidget;
QHBoxLayout *topWidgetLayout = new QHBoxLayout(topWidget);
topWidgetLayout->addWidget(widget1);
topWidgetLayout->addWidget(widget2);
topWidgetLayout->addWidget(widget3);
topWidgetLayout->addWidget(widget4);
topWidgetLayout->addStretch(1); // add the stretch
topWidget->setFixedHeight(50);
// now put the bottom (centered) widget into its own QHBoxLayout
QHBoxLayout *hLayout = new QHBoxLayout;
hLayout->addStretch(1);
hLayout->addWidget(bottomWidget);
hLayout->addStretch(1);
bottomWidget->setFixedSize(QSize(50, 50));
// now use a QVBoxLayout to lay everything out
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(topWidget);
mainLayout->addStretch(1);
mainLayout->addLayout(hLayout);
mainLayout->addStretch(1);
ピンクのボックス用と青いボックス用の2つの別々のレイアウトが本当に必要な場合は、青いボックスを独自のQVBoxLayoutにしてから、次を使用することを除いて、基本的に同じです。
mainLayout->addWidget(topWidget);
mainLayout->addLayout(bottomLayout);