Установить экран для qDockWidget в QMdiArea в Qt 5
Мое приложение использует QMdiArea, создается в QMainWindow. Его дочерние окна - QScrollArea. Каждый из них имеет QDockWidget в качестве дочернего элемента, который создается при создании QScrollArea. QDockWidget установлен как плавающий. В системах с несколькими графическими процессорами и несколькими экранами они сначала не отображаются на одном экране. Как я могу сделать их плавающими и отображаться на том же экране, что и QMdiArea, так как QDockWidget не имеет свойства "setScreen"?
Вот как я настраиваю вещи в QMainWindow:
mdiArea = new QMdiArea;
setCentralWidget(mdiArea);
// ImScrollArea inherits a QScrollArea.
ImScrollArea* dropImScrollArea = new ImScrollArea(urlList);
QMdiSubWindow *newSubWindow = new QMdiSubWindow;
newSubWindow->setWidget(dropImScrollArea);
newSubWindow->setAttribute(Qt::WA_DeleteOnClose);
mdiArea->addSubWindow(newSubWindow);
newSubWindow->show();
addDockWidget(Qt::BottomDockWidgetArea, dropImScrollArea->getDock());
dropImScrollArea->getDock()->setFloating(true);
dropImScrollArea->getDock()->show();
QDockWidget в QScrollArea определяется как:
dock = new QDockWidget(windowTitle, this);
dock->setFeatures(QDockWidget::NoDockWidgetFeatures);
dock->setFeatures(QDockWidget::DockWidgetMovable);
dock->setFeatures(QDockWidget::DockWidgetFloatable);
dock->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::RightDockWidgetArea);