在我的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();
它在某种程度上起作用,但不是我想要的那样。如果我这样做,释放的窗口将保留嵌入时的分辨率和几何图形,这与它们原本的不同。它也不会对调整窗口大小做出响应。释放的窗口也会丢失其菜单栏。
我希望它恢复到嵌入之前的原始状态。有办法做到这一点吗?
我使用的是带有Windows7的Qt 5.5。
我似乎已经找到了解决方案。通过简单的释放窗口
window->setParent(nullptr);
window->setFlags(Qt::Window);
成功了。