我正在开发一个 Qt 应用程序并更改了关闭行为closeEvent虚函数 https://deptinfo-ensip.univ-poitiers.fr/ENS/pyside-docs/PySide/QtGui/QWidget.html?highlight=setparent#PySide.QtGui.PySide.QtGui.QWidget.closeEvent这边走:
class MainWindow(QMainWindow):
def closeEvent(self, event):
event.ignore()
self.hide()
self.trayicon.showMessage('Running', 'Running in the background.')
这按预期工作。如果我删除event.ignore()
应用程序按预期退出,一切都很好。
我也想控制最小化事件,所以当用户单击标题栏上的最小化按钮时,我想移动窗口而不是最小化。
我无法使用hideEvent https://deptinfo-ensip.univ-poitiers.fr/ENS/pyside-docs/PySide/QtGui/QWidget.html?highlight=setparent#PySide.QtGui.PySide.QtGui.QWidget.hideEvent虚函数,因为事件无论如何都会发送到窗口,所以这段代码:
def hideEvent(self, event):
event.ignore()
self.move(0,0)
将窗口移动到左上角,然后将其最小化。event.ignore()
这里没有效果,所以我尝试使用QtCore.QObject.event https://deptinfo-ensip.univ-poitiers.fr/ENS/pyside-docs/PySide/QtCore/QObject.html?highlight=event#PySide.QtCore.PySide.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
窗口移动但再次最小化。这有什么问题吗?如何完全覆盖最小化事件?