在Qt 5中为QMdiArea中的qDockWidget设置屏幕

时间:2015-10-27 06:38:06

标签: c++ qt screen qdockwidget

我的应用程序使用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);

0 个答案:

没有答案