怎么做忽略quit()**和隐藏()** PyQt中closeEvent()的主窗口?

时间:2011-07-09 03:11:21

标签: qt pyqt

我想在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()主窗口?

1 个答案:

答案 0 :(得分:0)

我不确定你为什么要在closeEvent中处理隐藏事件。那是hideEvent

如果这不是您的意思,也许您应该澄清您的问题。

相关问题