【问题标题】:How to store INI files using QSettings on OS X如何在 OS X 上使用 QSettings 存储 INI 文件
【发布时间】:2017-01-21 01:34:54
【问题描述】:

我正在使用 QSettings 将我的应用程序的一些设置存储在 INI 文件中。

Windows 上一切正常,我的 INI 文件存储在我的应用程序的同一文件夹中。但是在 OS X 上我找不到 INI 文件,当我再次打开我的应用程序时,设置也没有加载。

我正在使用以下代码将值存储在使用QSettingsINI 文件中:

QSettings *settings = new QSettings("settings.ini", QSettings::IniFormat);

settings->beginGroup("AppSettings");
settings->setValue("Language", language);
settings->endGroup();

有人知道发生了什么吗?

如何在 OS X 上的 Application.app 中存储 INI 文件?

【问题讨论】:

  • QSettings::status() 调用返回什么? (尝试写一些东西之后)。你确定 QSettings::isWritable() 返回 true 吗?
  • 我试过qDebug() << settings->status();它返回0。
  • 当我从 Qt 运行我的应用程序时,QSettings::isWritable() 返回 true。但是当我使用macdeployqt MyApp.app 构建它并运行 MyApp.app 时,QSettings::isWritable() 返回 false。
  • 我的 INI 文件终于出现在 MyApp->Contents->MacOS->settings.ini 中(可能是因为我创建它是从 Qt 运行应用程序)。但是,我认为 INI 文件不可读写,因为它位于 MyApp.app 中。

标签: c++ macos qt ini qsettings


【解决方案1】:

我认为 OS X 不授予编辑应用程序包内文件的权限。

我通过更改 INI 文件位置解决了这个问题:

QString path = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
QSettings *settings = new QSettings(path+"/settings.ini", QSettings::IniFormat);

settings->beginGroup("AppSettings");
settings->setValue("Language", language);
settings->endGroup();

现在 INI 文件将保存在QStandardPaths::ConfigLocation 位置,在我的例子中是/Users/.../Library/Preferences

我根据这个topic解决了这个问题。

【讨论】:

    猜你喜欢
    • 2013-04-18
    • 2014-12-09
    • 2015-11-17
    • 2011-05-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2015-11-03
    • 2013-09-23
    相关资源
    最近更新 更多