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