QWidgets
名前付きで 4 つのウィジェットがあり、FourWindowWidget
これらの 4 つのウィジェットを FourWindowWidget に 1 つとして配置し、その下に配置しようとしていますが、一番上のウィジェットは常に FourWindowWidget のサイズの 70% を持つ必要があります。私は次のことを試しました:
QSize size = ui->FourWindowWidget->size();
ui->View1->setFixedHeight(size.height()*0.70);
QHBoxLayout * lay = new QHBoxLayout();
lay->addWidget(ui->View2);
lay->addWidget(ui->View3);
lay->addWidget(ui->View4);
lay->setMargin(0);
lay->setContentsMargins(0,0,0,0);
QGridLayout * mainlay = new QGridLayout;
mainlay->addWidget(ui->View1,0,0);
mainlay->setContentsMargins(0,0,0,0);
mainlay->setHorizontalSpacing(0);
mainlay->setSpacing(0);
mainlay->setMargin(0);
mainlay->addLayout(lay,1,0);
delete ui->FourWindowWidget->layout();
ui->FourWindowWidget->setLayout(mainlay);
this->update();
現在、問題は View1 のサイズが固定されていることですが、FourWindowWidget のサイズは固定されていません。ドックウィジェットを閉じるなど、周囲の他のウィジェットを削除すると変化します。このサイズ変更は想定されているか、修正したくないと言います。そのため、FourWindowWidget のサイズが変更されるたびに、その子ウィジェットは比率セットに従っている必要があります。しかし、私はこれを行うことができません原因1.サイズ変更を通知する信号がないため、内部ウィジェットの高さが計算されます。2. グリッド レイアウトで setFixedHeight を使用する以外に、トップ ウィジェットの高さを 70% に設定する方法が見つかりませんでした。
QSizePolicy を setHieghtForWidth に設定してみましたが、iit は有効な解決策ではありません。何らかの方法でこれを行うように提案してください。
質問は、ウィンドウ サイズに基づいて Qt ウィジェットのサイズを変更するのと同じようなものですが、誰も答えませんでした。