如何在QML blackberry 10中使用Q设置



我正在移动应用程序中执行登录功能。你知道,当我们登录时,我们必须在手机中保存一些数据。

我的整个程序在QML中,我想在手机中本地保存一些数据。我找不到任何示例代码,通过这些代码我可以了解如何在QML 中使用QSettings

如果你不能理解我的问题,请告诉我。

即使QSettings继承了QObject,它的结构并不是真正用于QML文件的声明性部分。浏览一下谷歌搜索的结果往往会证实我的想法,即创建一个自定义C++对象来处理带有QSettings的界面。

我找到的最简单的解决方案是创建一个QSettings的子类,将Q_INVOKABLE添加到我想从QML调用的方法中。然后,我将这个类的一个实例放在QML上下文中。

以下是它在代码中的样子。

settings.hpp:中

#ifndef Settings_HPP
#define Settings_HPP
#include <QSettings>
class Settings: public QSettings
{
    Q_OBJECT
public:
    Settings(QObject *parent = 0);
    Q_INVOKABLE QVariant value(const QString& key, const QVariant& defaultValue = QVariant()) const;
    Q_INVOKABLE void setValue(const QString& key, const QVariant& value);
};
#endif

settings.cpp:中

#include "settings.hpp"
Settings::Settings(QObject *parent)
    : QSettings(parent)
{
}
QVariant Settings::value(const QString& key, const QVariant& defaultValue) const
{
    return QSettings::value(key, defaultValue);
}
void Settings::setValue(const QString& key, const QVariant& value)
{
    QSettings::setValue(key, value);
}

当然,在创建QmlDocument实例(在我的例子中为applicationui.cpp)时,您会添加:

#include "settings.hpp"
...
qml->setContextProperty("settings", new Settings());

根据QML代码,我可以执行以下操作:

ToggleButton {
    checked: settings.value('somekey')
    onCheckedChanged: {
        settings.setValue('somekey', checked);
}             

最新更新