我想在closeEvent()中忽略退出并隐藏主窗口,但在按下Command-Q时,closeEvent无法忽略程序exit()。
测试环境:MacOS,最新的PyQt和Qt。
我的代码段a:
# ...
app = QtGui.QApplication(sys.argv)
# Why it doesn't works ?
# For more detail http://doc.qt.io/qt-5/qguiapplication.html#quitOnLastWindowClosed-prop
app.setQuitOnLastWindowClosed(False)
# ...
摘录b:
# ...
def closeEvent(self, event):
if self._settings["close_confirm"]:
btn_val, new_settings = ExitTipsDialog.get_input(settings=self._settings, parent=self)
if btn_val == QtGui.QDialog.Accepted:
if new_settings["close_main_pannel_action"] == MINIMIZE_WHILE_CLOSE_MAIN_PANNEL:
# Oops, QApplication::lastWindowClosed() signal is emitted
self.hide()
event.ignore()
return
else:
event.ignore()
return
else:
if self._settings["close_main_pannel_action"] == MINIMIZE_WHILE_CLOSE_MAIN_PANNEL:
event.ignore()
self.hide()
return
# ...
http://doc.qt.io/qt-5/qwidget.html#close说:
QApplication :: lastWindowClosed() 最后发出信号 可见主窗口(即窗口 没有父母)与 Qt :: WA_QuitOnClose属性集是 关闭。默认情况下,此属性为 设置除瞬态之外的所有小部件 窗户,如闪屏,工具 窗口和弹出菜单。
如何在closeEvent()中忽略quit()和hide()主窗口?
答案 0 :(得分:0)
我不确定你为什么要在closeEvent
中处理隐藏事件。那是hideEvent
。
如果这不是您的意思,也许您应该澄清您的问题。