いくつかのメソッドを再実装するために、QApplication からアプリケーション クラスを派生させました。コードは次のとおりです。
class MyApplication : public QApplication
{
Q_OBJECT
private:
public:
//...
virtual ~MyApplication();
};
MyApplication::~MyApplication()
{
qDebug("~MyApp1");
try
{
//some potentially long operations
}
catch(...)
{
qDebug("~MyApp Exception");
}
qDebug("~MyApp2");
}
int main(int argc, char *argv[])
{
int returnValue = 1;
{
MyApplication app(argc, argv);
returnValue = app.exec();
}
return returnValue;
}
問題は、さまざまな qDebug 出力が得られる傾向があることです。~MyApp1 は常に出力されますが、時々 ~MyApp2 が出力されます。その理由は何ですか?アプリが閉じているとき、Qt はデストラクタ全体を実行できないようです。デストラクタが終了するまでプログラムを待機させるにはどうすればよいですか?