2つのウィジェットを備えた水平QSplitterがあります。ユーザーが設定した比率が維持されるように、右側のウィジェットを新しいウィジェットに置き換えたいと思います。以下は私が現在持っているコードの簡略版です:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
splitter = new QSplitter(this);
splitter->setOrientation(Qt::Horizontal);
leftWidget = new QPushButton("left", splitter);
rightWidget = new QPushButton("right", splitter);
splitter->addWidget(leftWidget);
splitter->addWidget(rightWidget);
setCentralWidget(splitter);
}
void MainWindow::swapLayout()
{
QList<int> sizes = splitter->sizes();
rightWidget->deleteLater();
splitter->update();
rightWidget = new QPushButton("new right", splitter);
splitter->addWidget(rightWidget);
splitter->setSizes(sizes);
}
swapLayout()は、サイズを保存し、右側のウィジェットを削除し、新しい右側のウィジェットを追加して、サイズのリセットを試みます。ただし、左側のウィジェットはスペースの100%を占めます。サイズを復元しようとせずに、ウィジェットは両方ともスペースの50%を占めます。