모바일 응용 프로그램에서 로그인 기능을 수행하고 있습니다. 로그인 할 때 휴대 전화에 데이터를 저장해야한다는 것을 알고 있습니다.QML blackberry에서 QSettings를 사용하는 방법 10
내 전체 프로그램은 QML로되어 있으며 일부 데이터를 내 휴대 전화에 로컬로 저장하려고합니다. QAMPLE에서 QSettings를 사용하는 방법을 볼 수있는 샘플 코드를 찾을 수 없습니다.
내 문제를 이해할 수없는 경우 알려주십시오.
모바일 응용 프로그램에서 로그인 기능을 수행하고 있습니다. 로그인 할 때 휴대 전화에 데이터를 저장해야한다는 것을 알고 있습니다.QML blackberry에서 QSettings를 사용하는 방법 10
내 전체 프로그램은 QML로되어 있으며 일부 데이터를 내 휴대 전화에 로컬로 저장하려고합니다. QAMPLE에서 QSettings를 사용하는 방법을 볼 수있는 샘플 코드를 찾을 수 없습니다.
내 문제를 이해할 수없는 경우 알려주십시오.
QSettings는 QObject를 상속 받지만 실제로 QML 파일의 선언 부분에 사용하도록 구성되어 있지는 않습니다. Google 검색의 결과를 간단하게 살펴보면 QSettings를 사용하여 인터페이스를 처리하는 사용자 정의 C++ 객체를 만드는 것이 내 생각을 확인하는 경향이 있습니다.
내가 찾은 가장 간단한 해결책은 QSettings의 하위 클래스를 만들고 QML에서 호출하려는 메서드에 Q_INVOKABLE을 추가하는 것입니다. 그런 다음이 클래스의 인스턴스를 QML 컨텍스트에 배치합니다.
다음은 코드에서 보이는 방식입니다.
#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
에서 :
settings.hpp
에서
#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);
}
그리고 (내 경우에는 applicationui.cpp
) 당신이 당신의 QmlDocument 인스턴스를 만들 이제까지 물론, 당신은 추가합니다 :
#include "settings.hpp"
...
qml->setContextProperty("settings", new Settings());
QML 코드에서 다음과 같이 할 수 있습니다.
ToggleButton {
checked: settings.value('somekey')
onCheckedChanged: {
settings.setValue('somekey', checked);
}