最準确的方法是觀察小部件的QWindowStateChangeEvent,并在發生時立即響應。你可以不止一種方法。在
下面是如何重新實作目标小部件的event方法:class Window(QtGui.QWidget):
def __init__(self):
super(Window, self).__init__()
def event(self, e):
if e.type() == e.WindowStateChange:
if self.windowState() & QtCore.Qt.WindowMinimized:
print "Minimized"
# self.showMaximized()
# call the super class event() no matter what
return super(Window, self).event(e)
現在,如果您有一些其他小部件要監視最小化,并且您不想在該對象上定義一個新的事件方法,那麼您可以建立一個簡單地監視多個其他對象的事件的對象。它被稱為事件篩選器:
^{pr2}$
請注意,在檢查windowState時,應該使用&來比較,而不是{},因為狀态可以是多個值的組合,您需要使用掩碼檢查它,以檢視該值是否存在于其他值中。i、 如果你先把視窗最大化然後再最小化,它将有多個視窗狀态。在
另外,您還可以首先自定義實際的視窗屬性。是以,如果您的目标是防止最小化,可以禁用該按鈕:aWindow = QtGui.QWidget()
flags = aWindow.windowFlags()
aWindow.setWindowFlags(flags ^ QtCore.Qt.WindowMinimizeButtonHint)
這将從所有其他标志中減去最小化按鈕标志。在