3

トップレベル ウィンドウを閉じずに非表示にするにはどうすればよいですか?

NdmWindow は Gtk::Window から継承されたクラスです。NdmWindow のインスタンスを Gtk::Application に追加しました。

では、閉じるのではなく非表示にするにはどうすればよいですか?

前もって感謝します..

4

3 に答える 3

8

thisによると、ウィンドウが非表示になると から削除されるGtk::Applicationため、最後のウィンドウである場合はアプリが終了するという動作です。

ウィンドウが表示されていないときにアプリケーションを実行し続けたい場合の解決策は、オブジェクトを呼び出しhold()Gtk::Applicationアプリケーションの参照カウントを増やすことです。おそらく、ウィンドウを設定する前にこれを行いrelease()、終了ロジックの一部として対応するものを呼び出します。

于 2012-06-10T20:48:27.247 に答える
4

window->hide();

Gtk::Windowから継承するクラスを確認することを忘れないでください。

編集

わかりませんが、私の提案は、 を試してからhold()release()次のウィンドウを表示することです。

于 2012-06-10T13:21:25.950 に答える
2

機能するソリューションと機能しないソリューションを次に示しsegfaultます。への参照を保存しGtk::Application、メインにパラメーターとして送信してWindow classこれを呼び出しvar appます。後で必要になります。場合によってget_application()は が返されるため、必要ですnull

ウィンドウ呼び出しの削除イベント ハンドラで

app->hold();
hide();
return true;

app->release()アプリケーションを完全に終了させるため、ウィンドウを再度表示したい場合は呼び出さないでください。set_visible()window オブジェクトを呼び出すだけで表示されます。

于 2012-09-08T13:21:28.320 に答える