Изменение родительского элемента QOpenGLWidget с QMainWindow на QMdiSubWindow не работает должным образом.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Изменение родительского элемента QOpenGLWidget с QMainWindow на QMdiSubWindow не работает должным образом.

Сообщение Anonymous »

Я работаю над проектом САПР с использованием Qt OpenGL и реализовал представления как подпредставления QMdiArea.
Я отсоединил представление от 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);
Но я не могу сделать наоборот, т. е. я не могу повторно присоединить представление из QMainWidget к QMdiArea, даже если я создал новый QSubWindow и изменил родительский элемент и т. д.
Основная проблема заключается в том, что после того, как представление 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»