10

QDialog オブジェクトがあります。ユーザーがXボタンをクリックするか を押すCtrl+Qと、ダイアログを閉じるのではなく、最小化されたビューまたはシステム トレイ アイコンに移動します。それ、どうやったら出来るの?

4

1 に答える 1

22

閉じる代わりに最小化する単純なサブクラスは次のとおりです。

class MyDialog(QtGui.QDialog):
    # ...
    def __init__(self, parent=None):
        super(MyDialog, self).__init__(parent)

        # when you want to destroy the dialog set this to True
        self._want_to_close = False

    def closeEvent(self, evnt):
        if self._want_to_close:
            super(MyDialog, self).closeEvent(evnt)
        else:
            evnt.ignore()
            self.setWindowState(QtCore.Qt.WindowMinimized)

インタラクティブインタプリタでこのスニペットを使用してテストできます。

>>> from PyQt4 import QtCore, QtGui
>>> app = QtGui.QApplication([])
>>> win = MyDialog()
>>> win.show()
>>> app.exec_()   #after this try to close the dialog, it wont close bu minimize
于 2012-09-11T09:29:52.503 に答える