Я прямо сейчас использую QDockWidget
для создания динамического компонента для организации некоторых пользовательских графиков. Участки должны быть изменены по своим размерам и могут быть расположены друг над другом.
Следующий фрагмент кода иллюстрирует, чего я пытаюсь достичь:
#include <QApplication>
#include <QMainWindow>
#include <QLabel>
#include <QDockWidget>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
auto window = new QMainWindow;
window->setCentralWidget(new QLabel("Central Widget"));
for (int i = 1; i < 9; i++) {
auto dock = new QDockWidget(QString("Plot %1").arg(i));
dock->setWidget(new QLabel(QString("Plot %1").arg(i)));
dock->setAllowedAreas(Qt::AllDockWidgetAreas);
window->addDockWidget(Qt::BottomDockWidgetArea, dock);
}
window->show();
return app.exec();
}
Центральный виджет служит просто заполнителем и просто необходим для перетаскивания и перестановки QDockWidget
.
Я уже очень доволен достигнутым поведением, за исключением единственного недостатка. После изменения размера window
(увеличения) центральный виджет занимает все вновь полученное пространство, в то время как DockWidgets по-прежнему занимают то же место, что и раньше.
Поведение изображено ниже:
Это немного раздражает пользователя, так как центральный виджет — это просто заполнитель. На самом деле, я просто хотел, чтобы поведение было обратным, то есть центральный виджет должен сохранять свой размер, а DockWidgets должны быть увеличены.
Как я могу этого добиться?