释放并恢复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();

它在某种程度上起作用,但不是我想要的那样。如果我这样做,释放的窗口将保留嵌入时的分辨率和几何图形,这与它们原本的不同。它也不会对调整窗口大小做出响应。释放的窗口也会丢失其菜单栏。

我希望它恢复到嵌入之前的原始状态。有办法做到这一点吗?

我使用的是带有Windows7的Qt 5.5。

我似乎已经找到了解决方案。通过简单的释放窗口

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

成功了。

相关内容

  • 没有找到相关文章

最新更新