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 に答える