1

当窗口的大小发生变化时,我希望主窗口保持停靠小部件大小和中心小部件大小的近似比例。我用中央小部件和 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()
{
}

启动时,它看起来如下:

在此处输入图像描述

我可以缩小它:

在此处输入图像描述

再展开回来,展开后就和第一张截图一样。没事。

问题是,如果用户“触摸”中央小部件边界(我的意思是,手动更改中央小部件的大小,永远只是一点点),然后主窗口会显着改变其策略:在用户触摸中央小部件后,然后缩小窗口,然后展开它,所有的dockwidgets都有它们的最小尺寸:

在此处输入图像描述

问题是,如何防止这种行为?或者,更一般地说,我如何影响 的规模政策QMainWindow?我找不到关于我上面解释的行为的任何文档。

4

0 回答 0