Я отсоединил представление от QMdiArea к новому верхнему виджету (QMainWindow), используя функции setCentralWidget и setParent в Qt5.12, и это работает хорошо.
Код: Выделить всё
QMdiSubWindow* sw = (QMdiSubWindow*)m_mdiArea->activeSubWindow();
QTBVizWidget* view = (QTBVizWidget*)sw->widget();
QRect widgetRect = view->geometry();
widgetRect.moveTopLeft(view->parentWidget()->mapToGlobal(widgetRect.topLeft()));
DetachedWindow* newWid = new DetachedWindow(nullptr, view);
if (minimized)
view->showNormal();
else
newWid->setGeometry(widgetRect);
newWid->setCentralWidget(view);
view->setParent(newWid);
newWid->showNormal();
view->update();
m_mdiArea->removeSubWindow(sw);
Основная проблема заключается в том, что после того, как представление GL отображается внутри области Mdi, QMainWindow не закрывается.
Как только я попытался принудительно закрыть пустое QMainWindow, представление внутри области MDI также закрылось.
Код: Выделить всё
QMdiSubWindow* sw = new QMdiSubWindow;
sw->setWidget(VizWidget);
sw->setWindowFlags(Qt::SubWindow);
sw->setAttribute(Qt::WA_DeleteOnClose);
VizWidget->setParent(sw);
QRect widgetRect = VizWidget->geometry();
VizWidget->setGeometry(QRect(0, 0, widgetRect.width(), widgetRect.height()));
VizWidget->move(QPoint(0, 0));
detachWindow->setCentralWidget(nullptr);
detachWindow->close();
Я буду признателен любому, если он даст несколько полезных советов.
Спасибо.
Я пробовал гуглить и искал несколько решений, но мне это не помогло.
Изменение родительского элемента QWidget во время события mousePressEvent...
Родительский вопрос QWidget
Подробнее здесь: https://stackoverflow.com/questions/783 ... ot-working