我从 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 并没有让整个析构函数完成。如何让程序等到析构函数完成?