我正在开发一个 BB10 应用程序,其中包含一个登录屏幕,询问用户的用户名和密码。之后,用户按下提交按钮。
我使用 QML 设计了 UI
我想捕获用户提供的信息(用户名和密码)并将其发送到 Web 服务进行验证。
我想在 C++ 类中捕获信息。
谁能建议我如何做到这一点?
我正在开发一个 BB10 应用程序,其中包含一个登录屏幕,询问用户的用户名和密码。之后,用户按下提交按钮。
我使用 QML 设计了 UI
我想捕获用户提供的信息(用户名和密码)并将其发送到 Web 服务进行验证。
我想在 C++ 类中捕获信息。
谁能建议我如何做到这一点?
在你的 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 服务
首先编写一个包含 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 形式。希望这有帮助。