关闭时删除 QWidget

Deleting a QWidget when closed

我有我的主应用程序 QWindow,当我按下 QPushButton 时,会弹出一个新子 window(QWidget)。 QWidget window有两种退出方式:

  1. 单击右上角的 X,或者
  2. 点击'Finished'QPushButton我在QWidgetwindow.

我想确保,当使用任何一种方法退出 window 时,QWidget 都会被删除。我相信在第二种情况下,我可以通过将 self.deleteLater() 添加到单击“已完成 QPushButton 时调用的函数来确保这一点,但我正在努力了解如何在第一种情况下执行此操作。

您可以在小部件上设置一个属性来执行此操作:

class Widget(QtGui.QWidget)
    def __init__(self, parent=None)
        super(Widget, self).__init__(parent)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)

然后您的 "Finished" 按钮只需调用 self.close()(相当于单击标题栏关闭按钮)。