opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

Qtで閉じるを押しても閉じないようにしたいなとか思った

Qtのアプリケーションでの話。
Windowsなら右上。Macなら左上。Linuxならいろいろなところに「閉じる」ボタンがある。
いわゆるバツボタン?

これを押してもアプリケーションを終了しないようにする方法。


これはQWidgetのprotectedに含まれるcloseEventをラップしてやればいいようだ。
例えば、以下のように

void closeEvent(QCloseEvent* ce){
    ce->ignore(); // ちなみに反対は ce->accept();
};

こうするとイベントが飛んで来ても無視される。
ただ、このままだと本当に終了したいとき困るのでいろいろ工夫する必要がある。

まあ、それはそのソフトをどうしたいかで変わってくると思うけど。



とりあえず、毎度おなじみgat2は最新の2.5.0からこの方法を使って閉じるをしても閉じないようにした。
これで誤って閉じてもカウントが終了することはない。本当に終了したい時はSystemTaryのcloseを押せば閉じるようにした。

いずれはリファクタリングしようかと思ってるけど...まあ、汚いコードだけど少しくらい参考になるかも

https://github.com/opamp/gat2

これのmainwindow.hppとかmainwindow.cppを見れば上のようなことをやってるはず。
上のcloseEvent自体はmainwindow.hppの中に宣言も実装もしてある。

ところでgatの動作画像を更新しようと思って、適当にとったらちょうど"72"になった。くっ...
別に意識したわけじゃない・・・一生懸命余計なところが映らないようにトラックパッドで調節して、よし!って思って撮ったら72だった。



もしかしたら、他にもっと簡単な方法があるかもだけどとりあえず思いついたのはこんな感じ。

Firefox ブラウザ無料ダウンロード