我的应用程序使用QMdiArea在QMainWindow中实例化。它的子窗口是QScrollArea。它们中的每一个都将QDockWidget作为子项,在创建QScrollArea时进行实例化。 QDockWidget设置为floatable。 在多GPU和多屏幕系统中,它们不会首先出现在同一屏幕中。如何将它们设置为可浮动并出现在与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();
QScrollArea中的QDockWidget定义为:
dock = new QDockWidget(windowTitle, this);
dock->setFeatures(QDockWidget::NoDockWidgetFeatures);
dock->setFeatures(QDockWidget::DockWidgetMovable);
dock->setFeatures(QDockWidget::DockWidgetFloatable);
dock->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::RightDockWidgetArea);