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? Я не могу найти никаких документов о поведении, которое я объяснил выше.

0 ответов

Другие вопросы по тегам