Qt For Android 设置

来源:互联网 发布:淘宝店家快递费 编辑:程序博客网 时间:2024/06/15 21:58

Qt For Android 设置

作者:qyvlik

保存设置是一款应用应该具备的功能。这里先介绍 QML 接口。

Settings

import QtQuick.Window 2.1import Qt.labs.settings 1.0Window {    id: window    width: 800    height: 600    Settings {        property alias x: window.x        property alias y: window.y        property alias width: window.width        property alias height: window.height    }}

注意,Qt.labs.settings 模块可能在后期被移除。

上诉代码可以轻而易举的保存窗体的大小,并在下次启动时恢复窗体关闭时的大小。

通过设置 Settings::category 做到分组的效果。

QSettings

C++ 中有 QSettingsQSettings 类提供“持久性”,平台独立的应用程序设置。意思是,程序关闭后 QSettings 把窗体大小,位置,用户设置的选项保存起来,下次打开程序时再重新加载。

如果你需要的是“非持久性” 基于内存的数据结构,可以考虑使用 QMap<QString,QVariant> 代替。

通常,对于Windows,配置信息保存在注册表中,Mac OS 是 XML 文件,UnixINI 文件

具体用法和介绍可以查看如下文章:

QSettings 用法(一)

Qt下QSettings类详解

不过需要注意的是,不管是使用 QMLSettings,或者是QSettings,都需要设置一些应用的信息,例如应用名称,公司名称,域名,版本号等。另外,Settings 是基于 QSettings 而设计的, C++ 层面可以直接读取到 QMLSettings

#include <QApplication>#include <QQmlApplicationEngine>#include <QSettings>#include <QDebug>int main(int argc, char *argv[]){    QApplication app(argc, argv);    app.setOrganizationDomain("github/gdpurjyfs");    app.setOrganizationName("gdpurjyfs");    app.setApplicationName("TestSettings");    app.setApplicationDisplayName("TestSettings");    app.setApplicationVersion("0.0.1");    QSettings extraSettings;    extraSettings.beginGroup("CPP");    extraSettings.setValue("cppSettings", "this is cpp settings");    extraSettings.endGroup();    QQmlApplicationEngine engine;    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));    // try to get settings that create in qml    QSettings applicationWindowOption;    // QVariant(int, 517)    qDebug() << applicationWindowOption.value("ApplicationWindow/applicationWindowWidth");    // "\\HKEY_CURRENT_USER\\Software\\gdpurjyfs\\TestSettings"    qDebug() << applicationWindowOption.fileName();    return app.exec();}
import QtQuick 2.4import QtQuick.Controls 1.3import Qt.labs.settings 1.0ApplicationWindow {    id: window    title: qsTr("Test Settings")    width: 640    height: 480    visible: true    Settings {        id: applicationWindowOption        category: "ApplicationWindow"        property alias applicationWindowWidth : window.width        property alias applicationWindowHeight : window.height    }    Settings {        id: tryToGetCPPSettings        category: "CPP"        property string cppSettings    }    Component.onCompleted: {        try {            // qml: tryToGetCPPSettings.cppSettings:  this is cpp settings            console.log("tryToGetCPPSettings.cppSettings: ",                        tryToGetCPPSettings.cppSettings);        }catch(e){  console.log(e); }    }}

QSettings::group 对应到 Settings::categoryQSettings::setValue 中的 name 参数对应到 Settings 中的属性。从上述代码可以看出,一个设置在一个应用中是全局唯一的,使用前缀以及名称进行区别。

QSettings::group 对应到 Settings::categoryQSettings::setValue 中的 name 参数对应到 Settings 中的属性。


本文章来自本人 github 项目A-week-to-develop-android-app-plan

0 0
原创粉丝点击