2013-08-29 3 views
1

Я использую функции входа в мое мобильное приложение. и вы знаете, что мы должны сохранять некоторые данные на нашем мобильном телефоне, когда мы входим в систему.Как использовать QSettings в QML blackberry 10

моя общая программа находится в QML, и я хочу сохранить некоторые данные локально в своем телефоне. Я не могу найти образец кода, через который я могу посмотреть, как использовать QSettings внутри нашего QML

, пожалуйста, дайте мне знать, если вы не можете понять мою проблему.

ответ

4

Несмотря на то, что QSettings наследует QObject, он действительно не структурирован для использования в декларативных частях файла QML. Короткая прогулка по результатам поиска Google, как правило, подтверждает мои мысли о том, чтобы создать пользовательский объект C++, который обрабатывает интерфейс с помощью QSettings.

4

Простым решением, которое я нашел, является создание подкласса 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); 
}    
Смежные вопросы