我正在开发一个BB10应用程序,其中包含一个登录屏幕,询问用户的用户名和密码。用户按下提交按钮后。
我使用QML
设计了UI我想捕获用户提供的信息(用户名和密码)并将其发送到网络服务进行验证。
我想在C ++类中捕获信息。
有人可以建议我怎样才能做到这一点?
答案 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");
通过添加
将库包导入QMLimport com.library 1.0
然后在QML的attachObjects初始化成员类。您可以调用登录方法,因为它是Q_INVOKABLE形式。希望这有帮助。