トップレベル ウィンドウを閉じずに非表示にするにはどうすればよいですか?
NdmWindow は Gtk::Window から継承されたクラスです。NdmWindow のインスタンスを Gtk::Application に追加しました。
では、閉じるのではなく非表示にするにはどうすればよいですか?
前もって感謝します..
thisによると、ウィンドウが非表示になると から削除されるGtk::Application
ため、最後のウィンドウである場合はアプリが終了するという動作です。
ウィンドウが表示されていないときにアプリケーションを実行し続けたい場合の解決策は、オブジェクトを呼び出しhold()
てGtk::Application
アプリケーションの参照カウントを増やすことです。おそらく、ウィンドウを設定する前にこれを行いrelease()
、終了ロジックの一部として対応するものを呼び出します。
window->
hide
();
Gtk::Window
から継承するクラスを確認することを忘れないでください。
編集
わかりませんが、私の提案は、 を試してからhold()
、release()
次のウィンドウを表示することです。
機能するソリューションと機能しないソリューションを次に示しsegfault
ます。への参照を保存しGtk::Application
、メインにパラメーターとして送信してWindow class
これを呼び出しvar app
ます。後で必要になります。場合によってget_application()
は が返されるため、必要ですnull
。
ウィンドウ呼び出しの削除イベント ハンドラで
app->hold();
hide();
return true;
app->release()
アプリケーションを完全に終了させるため、ウィンドウを再度表示したい場合は呼び出さないでください。set_visible()
window オブジェクトを呼び出すだけで表示されます。