Установить экран для 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);

0 ответов

Другие вопросы по тегам