在Qt中释放和恢复embedded式窗口

在我的Qt应用程序中,我需要embedded一个本地窗口。 我首先获取它的WinId。 之后,我以下列方式创buildembedded式小部件:

QWindow * window = new QWindow::fromWinId(winid); QWidget * widget = createWindowContainer(window); QVBoxLayout vl; ui->frame->setLayout(&vl); vl.addwidget(widget); widget->show(); 

它的工作原理是完美的。 但是,当我想closures我的Qt应用程序并释放并将embedded式窗口恢复到原始状态时,我遇到了问题。

我目前正在执行以下步骤释放窗口:

 QWindow * releasedWindow = new QWindow(); window->setParent(newWin); newWin->show(); 

它以某种方式工作,但不像我想要的那样。 如果我这样做,释放的窗口保留embedded时的分辨率和几何结构,这与它们本身的不同。 它也不响应调整窗口的大小。 发布的窗口也失去了它的菜单栏。

我希望它能够恢复到embedded之前的原始状态。 有没有办法做到这一点?

我在Windows 7上使用Qt 5.5。

看来我已经找到了解决方案。 简单地释放窗口

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

诀窍吗?