gpt4 book ai didi

c++ - Windows 上的 QApplication::saveState 和 QApplication::commitData

转载 作者:可可西里 更新时间:2023-11-01 09:48:54 26 4
gpt4 key购买 nike

何时在 Windows 上调用虚函数 QApplication::saveStateQApplication::commitData?它们是否被调用,或者 session 管理只是 UNIX 的事情?如果应用程序在用户注销时正在运行(并且应用程序被强行关闭),它们会被调用吗?

最佳答案

我写了一个简单的测试应用;见下文。我使用 Qt 4.7 和 MSVS 2010 编译了应用程序并在 Windows XP 上运行它。然后我运行了三个不同的测试:

  1. 启动应用程序。使用主窗口中的关闭按钮终止应用程序。
  2. 启动应用程序。使用任务管理器中的结束任务终止应用程序。
  3. 启动应用程序。在应用程序运行时注销。

测试结果:

  • QApplication::commitData 仅在情况 3 中被调用
  • QApplication::saveState 在这三种情况中都没有被调用。

这是测试应用程序的代码。 commitData 和 saveState 函数没有做任何有用的事情;该应用程序的唯一目的是检查它们是否被调用。

#include <QtCore/QtCore>
#include <QtGui/QtGui>
#include <fstream>

class MyApplication : public QApplication {
public:
MyApplication(int& argc, char** argv) : QApplication(argc, argv) {}

virtual void saveState(QSessionManager& manager)
{
std::ofstream ofs("SaveState.txt");
ofs << "Test";
}

virtual void commitData(QSessionManager& manager)
{
std::ofstream ofs("CommitData.txt");
ofs << "Test";
}
};

int main(int argc, char** argv)
{
{
std::ofstream ofs("Begin.txt");
ofs << "Test";
}

MyApplication app(argc, argv);
QMainWindow mw;
mw.show();
app.exec();

{
std::ofstream ofs("End.txt");
ofs << "Test";
}
}

关于c++ - Windows 上的 QApplication::saveState 和 QApplication::commitData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8313471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com