我有一个用C++和Qt编写的桌面Windows应用程序。该应用程序有几个顶级窗口,偶尔需要以编程方式关闭和重新创建。此外,当程序的用户单击关闭按钮(最小化和最大化按钮旁边的那个)时,整个程序应该退出。我遇到的问题是,在这两种情况下,顶层窗口都会收到一个带有QCloseEvent对象的closeEvent()调用。当我看到这种情况发生时,我想退出程序(因为用户可能单击了关闭按钮),但也有可能窗口正在关闭,因为我正在以编程方式删除它以重新创建它。在QMainWindow::closeEvent()中有没有办法区分这两种情况? 最佳答案
在带有Qt5.2和以下应用程序代码的OSX10.9上#include"mywindow.h"#includeintmain(intargc,char*argv[]){QApplicationa(argc,argv);MyWindoww();w.show();returna.exec();}其中MyWindow派生自QMainWindow并覆盖了closeEvent(QCloseEvent*)方法,当我关闭应用程序窗口时调用此方法(例如,单击窗口(x)关闭按钮),但当我通过主菜单->“退出”或通过“CMD+Q”快捷键关闭应用程序时,它不会被调用。通过浏览网络和众多问题,我的印象是关闭应用
我想知道是否有可能忽略/取消基于某些bool标志设置的退出应用程序,即使用户单击红色“X”(关闭窗口按钮)也是如此。我是一名C#程序员,我知道这对.net应用程序来说很容易,但我对qt框架还很陌生,在谷歌上搜索没有获得任何相关结果。谢谢, 最佳答案 Qt的文档描述了这个特定的use-caseaboutaskingpermissiontocloseintheirexamples.如果子类化QMainWindow例如,重新实现closeEvent函数,您可以在有人尝试关闭应用时为您的应用提供自定义行为。例如:voidMainWindow
我是PyQt的新手,正在尝试开发简单的应用程序。我用Qt-designer设计了简单的用户界面。如果用户真的想在单击X或,,Exit''按钮或从菜单中选择Exit时退出应用程序,我需要额外确认。代码如下:importsysfromPyQt4importQtGui,QtCore,uicclassMainWindow(QtGui.QMainWindow):def__init__(self):QtGui.QMainWindow.__init__(self)self.ui=uic.loadUi('main_window.ui')self.ui.show()self.ui.btnExit.cli
我有一个QDialog对象。当用户单击X按钮或按Ctrl+Q时,我希望对话框转到最小化View或系统托盘图标,而不是关闭。我怎么做? 最佳答案 一个最小化而不是关闭的简单子(monad)类如下:classMyDialog(QtGui.QDialog):#...def__init__(self,parent=None):super(MyDialog,self).__init__(parent)#whenyouwanttodestroythedialogsetthistoTrueself._want_to_close=Falsedefc