В моем приложении Qt мне нужно встроить собственное окно. Я начинаю с получения WinId. После этого я создаю встроенный виджет следующим образом:Освобождение и восстановление встроенного окна в Qt
QWindow * window = new QWindow::fromWinId(winid);
QWidget * widget = createWindowContainer(window);
QVBoxLayout vl;
ui->frame->setLayout(&vl);
vl.addwidget(widget);
widget->show();
Он отлично работает так, как это должно быть. Однако мне приходится сталкиваться с проблемами, когда я хочу закрыть приложение Qt и выпустить и восстановить встроенное окно в исходное состояние.
Я сейчас делаю следующие шаги в высвобождении окна:
QWindow * releasedWindow = new QWindow();
window->setParent(newWin);
newWin->show();
Он работает таким образом, но не так, как я хочу, чтобы это было. Если я это сделаю, в выпущенном окне сохранится разрешение и геометрия, которые он имел, когда он был встроен, что отличается от того, что они были изначально. Он также не реагирует на изменение размера окна. Выпущенное окно также теряет панель меню.
Я хочу, чтобы он был восстановлен в исходное состояние, которое оно имело до внедрения. Есть ли способ достичь этого?
Я использую Qt 5.5 с Windows 7.
Написал ответ ниже. – blomm444