QApplication析构函数未正确调用

时间:2012-12-10 18:18:24

标签: qt destructor

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

1 个答案:

答案 0 :(得分:2)

正确调用QApplication析构函数,只是qDebug可能不应该/不能在应用程序的这种后期状态下使用。尝试直接使用cout / cin流(iostreams / printf)。