私の 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();
ある意味では機能しますが、私が望んでいるわけではありません。これを行うと、リリースされたウィンドウは、埋め込まれたときの解像度とジオメトリを保持します。これは、ネイティブのものとは異なります。また、ウィンドウのサイズ変更にも反応しません。解放されたウィンドウのメニュー バーも失われます。
埋め込む前の状態に戻したい。それを達成する方法はありますか?
Windows 7 で Qt 5.5 を使用しています。