2017-08-23 17 views
0

私はGUIで作業しており、ユーザーがWindows Xを押してウィンドウを閉じるときに呼び出されるcloseEvent()を作成する方法を知りました。しかし、同じcloseEvent()は、カウントダウンタイマーが満了したときに呼び出され、私はthis->close()を呼び出します。 closeEvent()が、ユーザーがWindows Xをクリックしてから終了したかどうかを検出する方法はありますか?this->close()関数を呼び出すコードはありますか?QT QCloseEventウィンドウXをクリックして閉じるclose()を呼び出します。

おかげ

答えて

1

closeEventが近い()またはXボタンを押してによって呼び出された場合に区別する直接的な方法はありません。 1つのオプションは、以下に示すようにフラグの状態を変更することにより、フラグを作成し、close()メソッドをオーバーライドすることである。

class YourClass: public BaseClass { 
[...] 
public: 
    void close(){ 
     isCloseByFunction = true; 
     BaseClass::close(); 
    } 

protected: 
    void closeEvent(QCloseEvent *event){ 

     if(isCloseByFunction){ 
      qDebug()<<"call close() function"; 
     } 
     else{ 
      qDebug()<<"press x button"; 
     } 
     isCloseByFunction = false; 
     BaseClass::closeEvent(event); 
    } 

private: 
    bool isCloseByFunction = false; 
}; 

あなたはgithubに例があります。

関連する問題