2

私の 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 を使用しています。

4

1 に答える 1