我刚刚将我的应用程序从 Qt 4.8.4 移植到 Qt 5.2.1。我对 Qt 文档中 FlowLayout 示例代码中FlowLayout
提供的类有疑问。
我有QMainWindow
一个QDockWidget
停靠在中央小部件底部的。有QDockWidget
一个FlowLayout
带有几个子小部件。在 Qt 4.8 中,这就像一个魅力,子小部件的大小符合DockWidget
. 但是,在 Qt 5.2 中,DockWidget
尝试将其大小增加到最大(从中央小部件中取代)。更改其布局可以防止这种不需要的行为。但是,当然,我FlowLayout
是故意使用的。
为了说明这个问题,我创建了一个最小的例子:
的构造函数DockWidget
:
QGroupBox *generalBox = new QGroupBox("");
generalBoxLayout = new FlowLayout;
generalBox->setLayout(generalBoxLayout);
for(int i=0; i<10; ++i)
{
QPushButton *button = new QPushButton("Test", this);
button->setMinimumWidth(100);
button->setMinimumHeight(100);
generalBoxLayout->addWidget(button);
}
this->setWidget(generalBox);
有人知道问题是什么以及我该如何解决?
编辑 我创建了一个新的最小工作示例,不幸的是无法重现 Qt 4.8 和 Qt 5.2 之间的差异。同样的问题出现在 Qt 4.8 中,所以我还是想在这里介绍一下:
初始视图显示底部停靠的 dockwidget 占据了整个垂直空间:
用鼠标调整dockwidget大小后查看
用鼠标调整主窗口大小后查看
这些屏幕截图显示,在手动更改停靠小部件的大小后,停靠小部件的行为符合预期。但是,在初始化时,小部件会占用中央小部件的所有可用空间,这是不希望的。
有人知道解决方案/解决方法吗?