Как игнорировать quit () ** и скрывать () ** главное окно в closeEvent () в PyQt? - PullRequest
0 голосов
/ 09 июля 2011

Я хочу игнорировать 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 ()?

1 Ответ

0 голосов
/ 09 июля 2011

Я не уверен, почему вы хотите обработать событие скрытия в closeEvent. Для этого есть hideEvent.

Если вы не это имеете в виду, возможно, вам следует уточнить свой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...