我正在开发一个 Qt 应用程序并以这种方式使用closeEvent虚拟函数更改关闭行为:
class MainWindow(QMainWindow):
    def closeEvent(self, event):
            event.ignore()
            self.hide()
            self.trayicon.showMessage('Running', 'Running in the background.')
这按预期工作。如果我按预期删除event.ignore()应用程序退出,一切都很好。
我也想控制最小化事件,所以当用户点击标题栏上的最小化按钮时,我想移动窗口而不是最小化。我不能使用hideEvent虚函数,因为无论如何事件都会发送到窗口,所以这段代码:
def hideEvent(self, event):
    event.ignore()
    self.move(0,0)
将窗口移动到左上角,然后将其最小化。event.ignore()在这里没有效果,所以我尝试使用QtCore.QObject.event这种方式:
def event(self, event):
    if event.type() == QEvent.WindowStateChange:
        if self.isMinimized():
            event.ignore()
            self.move(0,0)
            return True
    return False
窗口移动但再次最小化。这有什么问题?如何完全覆盖最小化事件?