Я только что портировал свое приложение из 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 с помощью мыши
Просмотр после изменения размера основного окна с помощью мыши
Эти скриншоты показывают, что док-виджеты ведут себя так, как ожидалось, после изменения размера док-виджета вручную. Однако при инициализации виджет занимает все свободное место из центрального виджета, что нежелательно.
Кто-нибудь знает о решении/обходном пути?