Я только что портировал свое приложение из Qt 4.8.4 в Qt 5.2.1. У меня проблема с классом FlowLayout, как показано в пример кода FlowLayout в документах Qt.
У меня есть 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);
Кто-нибудь знает, в чем проблема и как я могу ее решить?
Edit Я создал новый минимальный рабочий пример и, к сожалению, не могу воспроизвести несоответствие между Qt 4.8 и Qt 5.2. Эта же проблема проявляется в Qt 4.8, поэтому я хотел бы представить ее здесь:
Исходное представление, показывающее док-виджет с нижней док-станцией, занимающий все вертикальное пространство:

Просмотр после изменения размера dockwidget с помощью мыши

Просмотр после изменения размера основного окна с помощью мыши

Эти скриншоты показывают, что док-виджеты ведут себя так, как ожидалось, после изменения размера док-виджета вручную. Однако при инициализации виджет занимает все свободное место из центрального виджета, что нежелательно.
Кто-нибудь знает о решении/обходном пути?