我从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输出。我总是得到~MicApp1打印,但有时只有~MyApp2。可能是什么原因?似乎,当应用程序关闭时,Qt不会让整个析构函数完成。如何使程序等到析构函数完成?
答案 0 :(得分:2)
正确调用QApplication析构函数,只是qDebug可能不应该/不能在应用程序的这种后期状态下使用。尝试直接使用cout / cin流(iostreams / printf)。