2013-08-29 30 views
1

我正在我的移動應用程序中進行登錄功能。而且我們必須在登錄時將一些數據保存在我們的手機中。如何在QML中使用QSettings黑莓10

我的總體程序是QML,我想在本地保存一些數據在手機中。 我無法找到任何示例代碼,通過它我可以看到如何在QML中使用QSettings

如果您無法理解我的問題,請讓我知道。

回答

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); 
}