我一直在撞击这个人一段时间,所以我终于放弃并寻求帮助。
我的问题是我的程序有一个settings.ini,我想在程序关闭时更新。我使用以下方法实现了这一目标:
kegTrackerce.h
protected:
void closeEvent(QCloseEvent *event);
和
void KegTrackerCE::closeEvent(QCloseEvent *event)
{
saveSettings();
event->accept();
}
当我浏览文件并退出时保存设置并关闭程序,这很棒但是当我点击右上角的“X”时,窗口消失但程序没有退出(没有退出代码) )当我再次打开应用程序exe时,程序立即打开而不是加载。
我发现只有当我包含以下代码时才会发生这种情况
KegTrackerCE::KegTrackerCE(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
//A heap of other stuff here
KegTrackerCE::showFullScreen();
}
当我评论showfullscreen时,ta dah,“x”正常工作,设置文件正确更新,程序从内存中清除,我得到0退出代码。
我真的不想让应用程序最大化而不是全屏,因为屏幕空间有限,因此顶部没有冗余条。
感谢您的帮助,我已经尝试了很多东西,我已经包括:
qApp->setQuitOnLastWindowClosed(true);
与
一起void KegTrackerCE::lastWindowClosed (){
QApplication::quit();
}
但这没有做任何事情。
我很确定当事物处于全屏状态时按下x时,closeEvent()
根本没有被调用。
无论如何,请帮助!!非常感谢您的帮助!!
谢谢你们
答案 0 :(得分:1)
经过一番环顾,我发现了这个:
Nonclosing close button in Windows Mobile ( developed with Qt)
这是一个解决方案,但我对我的修复感到满意。基本上,当按下按钮时,win ce会默认运行应用程序。有人谈到在风格上设置一点,但我认为简单地删除x是最简单和最有效的方法
答案 1 :(得分:0)
“我很确定当事物处于全屏状态时按下x时,根本没有调用closeEvent()”在函数内部放置一个断点并检查,因为我看不出任何理由对于closeEvent不会被调用。
在hide()
之前调用closeEvent中的event->accept();
。可能不是解决方案而只是检查