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 回答