2

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

4

1 回答 1

2

QApplication Destructor 被正确调用,只是 qDebug 可能不应该/不能在应用程序的如此晚的状态下使用。尝试直接使用 cout/cin 流 (iostreams/printf)。

于 2012-12-10T18:55:28.303 回答