当窗口的大小发生变化时,我希望主窗口保持停靠小部件大小和中心小部件大小的近似比例。我用中央小部件和 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
?我找不到关于我上面解释的行为的任何文档。