私のアプリケーションにはトレイ アイコンがあるので、closeEvent をオーバーライドして、特定のことが発生したときにアプリケーションが「最小化」されるようにしました。ただし、終了を押すと、アプリケーションが完全に終了することを期待しています。ただし、closeEvent をオーバーライドして関数 quit() を呼び出した後、いくつかのコードがある MainWindow デストラクタをバイパスしているようです。closeEvent がオーバーライドされていない場合のように、MainWindow のデストラクタが呼び出されるようにアプリケーションを適切に閉じるには、closeEvent に何が欠けていますか?
使ってみました
QMainWindow::closeEvent(event);
他にもいくつかありますが、デストラクタは呼び出されません。
私のcloseイベントの実装は次のとおりです。
void MainWindow::closeEvent(QCloseEvent * event)
{
if(m_closeCompletely == false)
{
if (trayIcon->isVisible())
{
QMessageBox::information(this, tr("Hello"),
tr("The program will keep running in the "
"system tray. To terminate the program, "
"choose <b>Quit</b> in the context menu "
"of the system tray entry."));
}
}
else
{
event->accept();
}
}