BB10中的事件处理

时间:2013-04-10 10:36:11

标签: qml blackberry-10

我正在开发一个BB10应用程序,其中包含一个登录屏幕,询问用户的用户名和密码。用户按下提交按钮后。

我使用QML

设计了UI

我想捕获用户提供的信息(用户名和密码)并将其发送到网络服务进行验证。

我想在C ++类中捕获信息。

有人可以建议我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

回答问题的第一部分:
“我想捕获用户提供的信息”

在你的qml中

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

在你的namehere.hpp

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

在你的namehere.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
}

希望能帮助您至少捕获用户的数据。
After that you can begin to send it to a web service


Just found this example, which explains alot better then me :)

答案 1 :(得分: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形式。希望这有帮助。

相关问题