我正在我的移動應用程序中進行登錄功能。而且我們必須在登錄時將一些數據保存在我們的手機中。如何在QML中使用QSettings黑莓10
我的總體程序是QML,我想在本地保存一些數據在手機中。 我無法找到任何示例代碼,通過它我可以看到如何在QML中使用QSettings
如果您無法理解我的問題,請讓我知道。
我正在我的移動應用程序中進行登錄功能。而且我們必須在登錄時將一些數據保存在我們的手機中。如何在QML中使用QSettings黑莓10
我的總體程序是QML,我想在本地保存一些數據在手機中。 我無法找到任何示例代碼,通過它我可以看到如何在QML中使用QSettings
如果您無法理解我的問題,請讓我知道。
儘管QSettings繼承QObject,但它並不是真正用於QML文件聲明部分的結構。對Google搜索的結果進行簡短的介紹可以確認我的想法,即創建一個自定義的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);
}