c++ - 在 Qt 中释放和恢复嵌入窗口

标签 c++ windows qt hwnd qwindow

在我的 Qt 应用程序中,我需要嵌入一个 native 窗口。我首先获取它的 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();

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

我希望它恢复到嵌入之前的原始状态。有办法实现吗?

我在 Windows 7 上使用 Qt 5.5。

最佳答案

看来我已经找到解决办法了。只需释放窗口

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

成功了。

关于c++ - 在 Qt 中释放和恢复嵌入窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34266398/

相关文章:

c++ - 需要帮助将函数从 C++ 移植到 Ocaml

c++ - 如何用特定符号查找和替换字符串中的所有字符 C++

php - 如何从网站上抓取所有内容?

python - windows chrome 通过命令行刷新选项卡 0(或当前选项卡)

c++ - 阅读 QML 中结构的 C++ QVector

c++ - 如何在 QML VideoItem 中包含 gstreamer 接收器?

c++ - 简单Qt程序中的 undefined reference

c++ - 尝试创建一个 for 循环以显示从 1 (#) 到 8 (#) 的井号

c++ - 返回空指针的用户定义的 operator new

windows - 有没有简单的方法在 Windows 版 xampp 中安装 SSH?