1

ユーザーのユーザー名とパスワードを要求するログイン画面を含む BB10 アプリを開発しています。その後、ユーザーは送信ボタンを押します。

QMLを使用してUIを設計しました

ユーザーから提供された情報 (ユーザー名とパスワード) を取得し、それを Web サービスに送信して検証したいと考えています。

C++ クラスで情報を取得したいと考えています。

どうすればこれを達成できるかを誰かが提案できますか?

4

2 に答える 2

3

質問の最初の部分に答えるには、
「ユーザーから提供された情報を取得したい」

あなたのqmlで

Button {
    text: "Login"
    onClicked: {
        myQMLObj.login(userTextField.text,passTextField.text);
    }
}

あなたの名前でhere.hpp

public:
      // "Q_INVOKABLE" allows this function to be called from qml
      Q_INVOKABLE void login(QString user,QString pass);

あなたの名前here.cppで

namehere::namehere(bb::cascades::Application *app)
: QObject(app)
{
    QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);

    // expose C++ object in QML as an variable (so you can fire your login function
    qml->setContextProperty("myQMLObj", this);

    AbstractPane *root = qml->createRootObject<AbstractPane>();
    app->setScene(root);
}

void namehere::login(QString user, QString pass) {
    // Handle the user name & pass here
}

少なくともユーザーからデータを取得するのに役立つことを願っています。
その後、Web サービスへの送信を開始できます。


この例を見つけたところ、私よりもはるかによく説明されています:)

于 2013-04-10T12:03:45.803 に答える
0

最初に、QNetworkAccessManager、QNetworkReply、おそらく JsonDataAccess を含むクラスを作成します

#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <bb/data/JsonDataAccess>
#include <bb/system/SystemToast>

using namespace bb::data;
using namespace bb::system;

class Member : public QObject
{
    Q_OBJECT

public:
    Member();
    virtual ~Member();

    Q_INVOKABLE void login(QString username, QString password);

private:
    QNetworkAccessManager *networkManager;
    QString username;
    QString password;

signals:
    void serverReply();

private slots:
    void replyFinished(QNetworkReply*);
};

次に、クラスをQMLにロードします

qmlRegisterType<Member>("com.library", 1, 0, "Member");

を追加して、ライブラリ パッケージを QML にインポートします。

import com.library 1.0

次に、QML の attachObjects でメンバー クラスを初期化します。ログインメソッドはQ_INVOKABLE形式でそのまま呼び出すことができます。この助けを願っています。

于 2013-04-10T11:01:38.290 に答える