QMainWindow: управление размерами центрального виджета и виджетов дока
Я хочу, чтобы mainwindow сохранял примерное соотношение размеров виджета дока и центрального размера виджета при изменении размера окна. Я написал простейшее главное окно с центральным виджетом и 6 виджетами:
#include <QPlainTextEdit>
#include <QDockWidget>
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent)
{
this->setGeometry(20, 20, 600, 600);
this->setCentralWidget(
new QPlainTextEdit("central", this)
);
QDockWidget *p_dw;
for (int i = 0; i < 6; ++i){
p_dw = new QDockWidget("dock " + QString::number(i));
p_dw->setWidget(
new QPlainTextEdit("dock " + QString::number(i), this)
);
Qt::DockWidgetArea area;
switch (i){
case 0:
case 1:
area = Qt::TopDockWidgetArea;
break;
case 2:
area = Qt::RightDockWidgetArea;
break;
case 3:
case 4:
area = Qt::BottomDockWidgetArea;
break;
default:
area = Qt::LeftDockWidgetArea;
break;
}
addDockWidget(area, p_dw);
}
}
MainWindow::~MainWindow()
{
}
При запуске это выглядит следующим образом:
Я могу уменьшить это:
И развернуть обратно, а после развернуть это выглядит как на первом скриншоте. Это хорошо.
Проблема в том, что если пользователь "касается" границ центрального виджета (я имею в виду, что размер центрального виджета вручную, когда-нибудь, немного), то главное окно резко меняет свою политику: после того, как пользователь касается центрального виджета, затем сжимает окно, а затем расширяет его обратно, все док-виджеты имеют свои минимальные размеры:
Вопрос в том, как предотвратить это поведение? Или, в более общем смысле, как я могу влиять на размерную политику QMainWindow
? Я не могу найти никаких документов о поведении, которое я объяснил выше.