Выпуск и восстановление встроенного окна в Qt

В моем приложении Qt мне нужно встроить собственное окно. Я начинаю с получения его WinId. После этого я создаю встроенный виджет следующим образом:

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.

2

Решение

Кажется, я уже нашел решение. Отпустите окно просто

window->setParent(nullptr);
window->setFlags(Qt::Window);

Делает трюк.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]