我希望主窗口在窗口大小更改时保持停靠窗口小部件大小和中央窗口小部件大小的近似比率。我编写了最简单的主窗口,其中包含中央窗口小部件和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
的大小政策?我找不到任何关于我上面解释的行为的文档。