Qml BB10中的事件处理

Qml BB10中的事件处理,qml,blackberry-10,Qml,Blackberry 10,我正在开发一个BB10应用程序,其中包含一个登录屏幕,询问用户的用户名和密码。之后,用户按下提交按钮 我已经使用QML设计了UI 我希望捕获用户提供的信息(用户名和密码),并将其发送到web服务进行验证 我想在C++类中捕获信息。 有人能建议我如何实现这一点吗?首先编写一个包含QNetworkAccessManager、QNetworkReply和JsonDataAccess的类 #include <QObject> #include <QNetworkAccessManage

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

我已经使用QML设计了UI

我希望捕获用户提供的信息(用户名和密码),并将其发送到web服务进行验证

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


有人能建议我如何实现这一点吗?

首先编写一个包含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的attachedObjects处初始化成员类。您可以按Q_可调用形式调用login方法。希望有此帮助。

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

Button {
    text: "Login"
    onClicked: {
        myQMLObj.login(userTextField.text,passTextField.text);
    }
}
以您的名义在这里.hpp

public:
      // "Q_INVOKABLE" allows this function to be called from qml
      Q_INVOKABLE void login(QString user,QString pass);
以您的名义在这里。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
}
namehere::namehere(bb::cascades::Application*app)
:QObject(应用程序)
{
QmlDocument*qml=QmlDocument::create(“asset:///main.qml)母公司(本公司);
/将QML对象中的C++对象作为变量公开(这样您就可以启动登录功能)
qml->setContextProperty(“myQMLObj”,this);
抽象窗格*root=qml->createRootObject



感谢您提供的链接…它似乎对我非常有用…我会尝试一下,现在就让您知道它是否对我有效。:)在
myQMLObj.login()中什么是
myQMLObj
<代码> >我们不需要使用<代码> Onclip:<代码> >调用函数吗?现在只需修改按钮!MyqMLROBJ,是一个变量,它暴露了你的C++,这样你就可以从你的QMLSO中释放C++函数。这个变量<代码> MyqMLBROJ 默认是可用的,还是我们必须在某处创建它?哦,我错过了这个部分:代码> QML> SETCONTSEProperty(“myQMLObj”,这个);
。现在我明白了它的来龙去脉。非常感谢
public:
      // "Q_INVOKABLE" allows this function to be called from qml
      Q_INVOKABLE void login(QString user,QString pass);
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
}