0

我一直在用头撞这个,所以我终于放弃并寻求帮助。

我的问题是我的程序有一个 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();
}

但这无济于事。

我相当确定closeEvent()当事物处于全屏状态时按下 x 时根本不会调用。

无论如何,请帮助!您的帮助将不胜感激!!

多谢你们

4

2 回答 2

1

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

Windows Mobile 中的非关闭关闭按钮(使用 Qt 开发)

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

于 2013-02-15T00:19:23.417 回答
0

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

hide()在 closeEvent 之前调用event->accept();。可能不是一个解决方案,但只是为了检查

于 2013-02-13T07:15:49.517 回答