【问题标题】:Qt QSettings try to create ini file but none created why?Qt QSettings 尝试创建ini文件但没有创建为什么?
【发布时间】:2011-07-28 14:34:09
【问题描述】:

我正在尝试创建包含配置数据的 ini 文件,我有单音类 像这样设置QSettings 对象:

... #DEFINE CONFIG_FILE_NAME "myconfig.ini"

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

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

【问题讨论】:

  • 您确定正在调用该代码吗?你确定你在寻找正确的目录吗?
  • 是的,它调用了,我有断点和日志打印显示调用了这个代码并且目录在那里
  • 您是否尝试设置任何变量,然后销毁m_pSettings
  • 我在 Qt 4.7.2 上运行了这段代码,结果相同。 QSettings 对象非空,可以在其上调用 beginWriteArray 而不会出现段错误。

标签: c++ qt qsettings


【解决方案1】:

我相信为了强制 QSettings 文件出现,您需要在其中设置至少一个值,然后调用 sync() 方法。看看下面的例子是否适合你:

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

希望这会有所帮助,问候

【讨论】:

  • ...或者在堆栈上创建 QSettings 对象并让 dtor 进行同步。
【解决方案2】:

我不认为 "/"+CONFIG_FILE_NAME 返回预期的结果。可能是你问题的原因.. 无论如何,运算符 +() 存在于 QString 类中,因此 QDir::currentPath() + "/my_config_file.ini" 必须正常工作。

【讨论】:

    猜你喜欢
    • 2016-02-05
    • 1970-01-01
    • 2013-12-27
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多