4

私の 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;
}

ここで何か不足していますか?終了時に呼び出される独自のクリーンアップ ルーチンを持つ最良の方法は何ですか?

4

1 に答える 1