【问题标题】:How to use QSettings in QML blackberry 10如何在 QML 黑莓 10 中使用 QSettings
【发布时间】:2013-08-29 12:08:34
【问题描述】:

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

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

如果您无法理解我的问题,请告诉我。

【问题讨论】:

    标签: blackberry qml blackberry-10 blackberry-simulator


    【解决方案1】:

    尽管 QSettings 继承了 QObject,但它并没有真正结构化以用于 QML 文件的声明部分。浏览一下 Google 搜索的结果往往会证实我的想法,即创建一个自定义 C++ 对象来处理与 QSettings 的接口。

    【讨论】:

      【解决方案2】:

      我发现的最简单的解决方案是创建 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);
      }             
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-21
        • 2012-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多