qt'x'在全屏时不会关闭应用

时间:2013-02-13 05:06:23

标签: windows qt mobile

我一直在撞击这个人一段时间,所以我终于放弃并寻求帮助。

我的问题是我的程序有一个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()根本没有被调用。

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

谢谢你们

2 个答案:

答案 0 :(得分:1)

经过一番环顾,我发现了这个:

Nonclosing close button in Windows Mobile ( developed with Qt)

这是一个解决方案,但我对我的修复感到满意。基本上,当按下按钮时,win ce会默认运行应用程序。有人谈到在风格上设置一点,但我认为简单地删除x是最简单和最有效的方法

答案 1 :(得分:0)

“我很确定当事物处于全屏状态时按下x时,根本没有调用closeEvent()”在函数内部放置一个断点并检查,因为我看不出任何理由对于closeEvent不会被调用。

hide()之前调用closeEvent中的event->accept();。可能不是解决方案而只是检查