Qt QSettings尝试创建ini文件,但没有创建成功,为什么?

7

我正在尝试创建一个 ini 文件,以保存配置数据。我有一个单例类,它设置了 QSettings 对象,如下所示:

... #DEFINE CONFIG_FILE_NAME "myconfig.ini"

m_pSettings = new QSettings(QDir::currentPath()+"/"+CONFIG_FILE_NAME,QSettings::IniFormat);

根据文档,应该创建一个myconfig.ini文件,但是当我查看我的应用程序目录时,没有发现这个文件,请问我做错了什么?


1
你确定代码被调用了吗?你确定你在正确的目录中查找了吗? - Mat
是的,当然。我有断点和日志打印,显示这段代码被调用并且目录存在。 - user63898
你尝试设置任何变量,然后销毁 m_pSettings 了吗? - Kamil Klimek
我在Qt 4.7.2上运行了这段代码,结果相同。QSettings对象是非空的,可以在其上调用beginWriteArray而不会导致段错误。 - Matt Phillips
2个回答

17

我认为,要强制出现QSettings文件,您需要在其中设置至少一个值,然后调用sync()方法。请看下面的示例,看看它是否适用于您:

QSettings* settings = new QSettings(QDir::currentPath() + "/my_config_file.ini", QSettings::IniFormat);
settings->setValue("test", "value");
settings->sync();

希望这可以帮到你,谢谢


...或者在堆栈上创建QSettings对象,让析构函数执行同步操作。 - Frank Osterfeld

-1
我认为"/"+CONFIG_FILE_NAME并没有返回预期的结果,可能是你遇到问题的原因。 无论如何,在QString类中存在operator +(),所以QDir::currentPath() + "/my_config_file.ini"应该可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接