2012-02-12 27 views

Trả lời

48

Ghi đè phương thức closeEventQWidget trong cửa sổ chính của bạn.

Ví dụ:

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

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

Một khả năng khác là sử dụng aboutToQuit tín hiệu 's QApplication như thế này:

app = QApplication(sys.argv) 
app.aboutToQuit.connect(myExitHandler) # myExitHandler is a callable 
+5

Lưu ý rằng điều này sẽ không làm việc trong các chủ đề chính là bận rộn tính toán. Người ta nên chuyển các tính toán sang một chủ đề khác để có thể đóng cửa sổ. – d33tah

+1

lưu ý rằng trên QMainWindow, không có thuộc tính 'canExit' – Tcll

+1

@Tcll, không có thuộc tính nào trong thư viện Qt (theo kiến ​​thức của tôi, nhưng chắc chắn không có trong QWidget hoặc QMainWindow). Đó là điểm: bạn xác định nó là một trình xử lý tùy chỉnh. –

Các vấn đề liên quan