【问题标题】:How and where do I save QSettings on Android?如何以及在哪里保存 Android 上的 QSettings?
【发布时间】:2016-01-22 12:06:10
【问题描述】:

我开始为我的程序制作一个设置表单,但我有点卡在设置数据上。我可以创建一个QSettings 实例,但我应该如何处理它?

QApplication app(argc, argv);
QSettings settings;
settings.setValue("test", QVariant((int)42));
// Now what?

【问题讨论】:

    标签: android qt qsettings


    【解决方案1】:

    通常,您不需要知道设置的存储位置。 QSettings 的常用用法:您需要设置您的组织名称以及您的应用程序的名称。保存时需要设置section和key,以及一个参数。

    //set names
    QCoreApplication::setOrganizationName("MySoft");
    QCoreApplication::setApplicationName("Star Runner");
    //...
    QSettings settings;
    //saving
    settings.setValue("MySection/MyKey", 42);
    //loading: section, key, and default value (default value will be used if the setting doesn't exist)
    int val = settings.value("MySection/MyKey", 0).toInt();
    

    更新

    //Perhaps, for Android it is necessary to call a function
    settings.sync();
    

    (来自文档:

    void QSettings::sync() 
    

    将所有未保存的更改写入永久 存储,并重新加载已更改的任何设置 同时通过另一个应用程序。这个函数是自动调用的 来自 QSettings 的析构函数和定期的事件循环 间隔,所以你通常不需要自己调用它

    )

    【讨论】:

    • “自动”是什么意思?在使用 QSettings 保存时,您需要为每个变量调用 setValue()(具有唯一的对节键)。而且你不需要做其他事情
    • 保存意味着设置实际上被写入程序内存之外的某个地方(例如文件)。所以我要问的是这是否会自动发生,如果是这样,我想知道什么时候......否则我需要知道如何保存设置(例如,保存到文件、系统注册表或 Android 使用的任何东西)。
    • 不,除了调用 setValue() 之外,您无需执行其他操作。 QSettings 将自动写入注册表(或文件等)。 UPD:我在 Android 上需要 settings.sync();
    • 那更新:settings.sync(); 到底是什么意思?
    • 也许,可能是安卓需要在保存后调用一个函数settings.sync()。如果您想在调用 QSettings 的析构函数之前加载一些保存的设置,我需要它
    猜你喜欢
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2020-07-18
    • 2017-05-07
    • 2019-04-09
    • 1970-01-01
    相关资源
    最近更新 更多