web-dev-qa-db-ja.com

PySide / PyQtは、ユーザーがウィンドウを閉じようとしたかどうかを検出します

ユーザーがウィンドウを閉じようとしているかどうかを検出する方法はありますか?たとえば、Tkinterでは次のようなことができます。

def exit_dialog():
    #do stuff
    pass

root = Tk()
root.protocol("WM_DELETE_WINDOW", exit_dialog)
root.mainloop()

ありがとう。

20
SaulTigh

メインウィンドウでcloseEventの-​​ QWidget メソッドをオーバーライドします。

例えば:

class MainWindow(QWidget): # or QMainWindow
    ...

    def closeEvent(self, event):
        # do stuff
        if can_exit:
            event.accept() # let the window close
        else:
            event.ignore()

もう1つの可能性は、QApplicationの-​​ aboutToQuit 信号を次のように使用することです。

app = QApplication(sys.argv)
app.aboutToQuit.connect(myExitHandler) # myExitHandler is a callable
57
Oleh Prypin