私の Qt アプリには、最終的に終了する前にすべてを適切にクリーンアップする終了ルーチンがあります。そうしないと、どこかでクラッシュする可能性があります。アプリはシステム トレイで実行され、システム トレイ アイコン用に定義された [終了] メニューがあります。quitAction で、Mac のアプリ メニューとマージされるようにメニュー ロールを設定しましたが、自分のスロットが呼び出されていません。コードは以下のとおりです。
QAction *quitAction = new QAction(tr("&Quit"), this);
quitAction->setMenuRole(QAction::QuitRole);
connect(quitAction, SIGNAL(triggered()), this, SLOT(quittingApp()));
QApplication で QCloseEvent をキャプチャしようとしましたが、それでもうまくいかないようです。
bool MyApplication::event(QEvent *ev)
{
bool eaten = false;
switch (ev->type())
{
case QEvent::Close:
{
quittingApp(); //My quit cleanup routine
eaten = true;
break;
}
default:
eaten = QApplication::event(ev);
break;
}
return eaten;
}
ここで何か不足していますか?終了時に呼び出される独自のクリーンアップ ルーチンを持つ最良の方法は何ですか?