Windows qt';x';不';当全屏显示时,不要关闭应用程序

Windows qt';x';不';当全屏显示时,不要关闭应用程序,windows,qt,mobile,Windows,Qt,Mobile,我已经有一段时间一直在用我的头撞这个了,所以我终于放弃了,并寻求帮助 我的问题是,我的程序有一个settings.ini,我想在程序关闭时更新它。我通过以下方式实现了这一目标: kegTrackerce.h protected: void closeEvent(QCloseEvent *event); 及 当我浏览文件并退出时,这会保存设置并关闭程序,这很好,但当我单击右上角的“X”时,窗口会消失,但程序不会退出(没有退出代码),并且当我再次打开应用程序exe时,程序会立即打开,而不是

我已经有一段时间一直在用我的头撞这个了,所以我终于放弃了,并寻求帮助

我的问题是,我的程序有一个settings.ini,我想在程序关闭时更新它。我通过以下方式实现了这一目标:

kegTrackerce.h

protected:
    void closeEvent(QCloseEvent *event);

当我浏览文件并退出时,这会保存设置并关闭程序,这很好,但当我单击右上角的“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()
根本不会被调用

无论如何,请帮忙!!非常感谢你的帮助

谢谢大家

“我很确定在全屏状态下按下x时closeEvent()根本不会被调用”在函数中放置一个断点并进行检查,因为我看不到不调用closeEvent的任何原因


在closeEvent中调用
event->accept()之前的
hide()
。可能不是一个解决方案,但只是在环顾四周后检查一下,我发现:


这是一个解决方案,但我对我的解决方案很满意。基本上,当按下按钮时,win ce会在默认情况下保持应用程序运行。有人说要在样式中设置一点,但我认为简单地删除x是最简单和最有效的方法

在KegTrackerCE::closeEvent(QCloseEvent*事件)中添加QMainWindow::closeEvent(事件)谢谢您的回复。我已经尝试了隐藏和qmainwindow方法。我不知道当按下x时为什么不调用close事件,我如何在其中放置断点?取决于您使用的IDE,我使用visual studio。你能试着用showMaximized()代替showFullScreen()吗?我有一个解决方案。在Main.cpp中,我放置了w.showFullScreen()//showMaximized();这不是一个修复,但它占用了更多的屏幕空间,现在角落里的x不见了。因此,退出程序的唯一方法是通过文件退出,然后正确执行closeEvent并保存settings.ini。为什么这不起作用会让我很烦恼,但我现在有事情要做,所以我很高兴。再次感谢你的帮助,维诺德!
void KegTrackerCE::lastWindowClosed (){
QApplication::quit();
}