Я хочу игнорировать quit и скрывать главное окно в closeEvent (), но closeEvent не может игнорировать выход из программы () при нажатии Command-Q.
Среда тестирования: MacOS, последние версии PyQt и Qt.
Мой фрагмент кода:
# ...
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
закрыто. По умолчанию этот атрибут
установить для всех виджетов, кроме переходных
окна, такие как заставки, инструмент
окна и всплывающие меню.
Как игнорировать quit () и скрывать () главное окно в closeEvent ()?