在我的 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;
}
我在这里错过了什么吗?在退出期间调用我自己的清理例程的最佳方法是什么?