Blackberry 使用c++;黑莓瀑布 我使用Json web服务获取响应 当我按下一个按钮时,我必须按到新的页面,当响应成功时,其他人必须举杯——已经注册了 我将得到响应“电子邮件id已注册”或“注册成功” 当我注册成功的时候,我只需要推一个新的页面
请帮忙Blackberry 使用c++;黑莓瀑布 我使用Json web服务获取响应 当我按下一个按钮时,我必须按到新的页面,当响应成功时,其他人必须举杯——已经注册了 我将得到响应“电子邮件id已注册”或“注册成功” 当我注册成功的时候,我只需要推一个新的页面,blackberry,blackberry-10,blackberry-cascades,Blackberry,Blackberry 10,Blackberry Cascades,请帮忙 CPP文件 ApplicationUI::ApplicationUI(bb::cascades::Application *app) : QObject(app) , m_succeeded(false) , m_active(false) { QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this); qml->setContextP
CPP文件
ApplicationUI::ApplicationUI(bb::cascades::Application *app) :
QObject(app)
, m_succeeded(false)
, m_active(false)
{
QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
qml->setContextProperty("app", this);
//qml->setContextProperty("second", m_pane);
m_root = qml->createRootObject<AbstractPane>();
m_pane = new NavigationPane;
app->setScene(m_root);
}
void ApplicationUI::sendRequest()
{
if (m_active)
return;
m_active = true;
emit activeChanged();
m_succeeded = false;
QNetworkAccessManager* networkAccessManager = new QNetworkAccessManager(this);
QNetworkRequest request(m_urllink);
QNetworkReply* reply = networkAccessManager->get(request);
bool ok = connect(reply, SIGNAL(finished()), this, SLOT(onFinished()));
Q_ASSERT(ok);
Q_UNUSED(ok);
}
void ApplicationUI::onFinished()
{
m_succeeded = true;
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
QString response;
if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200)
{
JsonDataAccess jda;
QVariantMap map = jda.loadFromBuffer(reply->readAll()).toMap();
QVariantList addresses = map["RegistrationResult"].toList();
qDebug() <<"Full Result is = "<<map["RegistrationResult"].toString();
QString m_temperature;
QString result;
result = map["RegistrationResult"].toString();
m_temperature=result.section(':', 0, 0);
m_urlResult = result;
emit urlResultChanged();
qDebug()<<m_urlResult;
qDebug()<<"\n\n\n";
if(result == "EMAIL ID ALREADY EXISTS")
{
qDebug() << " New Registration Result is " <<m_temperature;
qDebug() <<map["RegistrationResult"].toString();
}
else if(result != "EMAIL ID ALREADY EXISTS")
{
QString empid;
QString empid_no;
QString::SectionFlag flag = QString::SectionSkipEmpty;
result = map["RegistrationResult"].toString();
//empid=m_temperature.section(':', 1, 1);
empid_no = map["RegistrationResult"].toString();;
empid_no=empid_no.section(':', 2, 2);
qDebug()<<"Emd ID = "<<empid_no;
qDebug()<<"Company ID"<<result.section(':', 4, 4);
QmlDocument *qml = QmlDocument::create("asset:///second.qml").parent(this);
Page *new_Page = qml->createRootObject<Page>();
m_pane->push(new_Page);
**?????????????????????????????**
}
试试这个:
在main.qml名称中,为navigationpane指定一个objectname,如:
NavigationPane {
id: navigation
objectName: "mynavigation"
在applicationui.cpp构造函数中更改以下行:
m_root = qml->createRootObject<AbstractPane>();
m_pane = m_root->findChild<NavigationPane*>("mynavigation");
m_root=qml->createRootObject();
m_pane=m_root->findChild(“mynavigation”);
在构造second.qml后也更改这些行:
QmlDocument *qml = QmlDocument::create("asset:///second.qml").parent(this);
qml->setContextProperty("app", this);
Page *new_Page = qml->createRootObject<Page>();
m_pane->push(new_Page);
QmlDocument*qml=QmlDocument::create(“asset:///second.qml)母公司(本公司);
qml->setContextProperty(“应用程序”,此);
Page*new_Page=qml->createRootObject();
m_窗格->推送(新建页面);
CPP文件:
ApplicationUI::ApplicationUI(bb::cascades::Application *app) :
QObject(app)
, m_succeeded(false)
, m_active(false)
{
QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
qml->setContextProperty("app", this);
//qml->setContextProperty("second", m_pane);
m_root = qml->createRootObject<AbstractPane>();
m_pane = m_root->findChild<NavigationPane*>("mynavigation"); // changed
app->setScene(m_root);
}
void ApplicationUI::sendRequest()
{
if (m_active)
return;
m_active = true;
emit activeChanged();
m_succeeded = false;
QNetworkAccessManager* networkAccessManager = new QNetworkAccessManager(this);
QNetworkRequest request(m_urllink);
QNetworkReply* reply = networkAccessManager->get(request);
bool ok = connect(reply, SIGNAL(finished()), this, SLOT(onFinished()));
Q_ASSERT(ok);
Q_UNUSED(ok);
}
void ApplicationUI::onFinished()
{
m_succeeded = true;
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
QString response;
if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200)
{
JsonDataAccess jda;
QVariantMap map = jda.loadFromBuffer(reply->readAll()).toMap();
QVariantList addresses = map["RegistrationResult"].toList();
qDebug() <<"Full Result is = "<<map["RegistrationResult"].toString();
QString m_temperature;
QString result;
result = map["RegistrationResult"].toString();
m_temperature=result.section(':', 0, 0);
m_urlResult = result;
emit urlResultChanged();
qDebug()<<m_urlResult;
qDebug()<<"\n\n\n";
if(result == "EMAIL ID ALREADY EXISTS")
{
qDebug() << " New Registration Result is " <<m_temperature;
qDebug() <<map["RegistrationResult"].toString();
}
else if(result != "EMAIL ID ALREADY EXISTS")
{
QString empid;
QString empid_no;
QString::SectionFlag flag = QString::SectionSkipEmpty;
result = map["RegistrationResult"].toString();
//empid=m_temperature.section(':', 1, 1);
empid_no = map["RegistrationResult"].toString();;
empid_no=empid_no.section(':', 2, 2);
qDebug()<<"Emd ID = "<<empid_no;
qDebug()<<"Company ID"<<result.section(':', 4, 4);
QmlDocument *qml = QmlDocument::create("asset:///second.qml").parent(this);
qml->setContextProperty("app", this); // changed
Page *new_Page = qml->createRootObject<Page>();
m_pane->push(new_Page);
**?????????????????????????????**
}
ApplicationUI::ApplicationUI(bb::cascades::Application*app):
QObject(应用程序)
,m_成功(错误)
,m_活动(错误)
{
QmlDocument*qml=QmlDocument::create(“asset:///main.qml)母公司(本公司);
qml->setContextProperty(“应用程序”,此);
//qml->setContextProperty(“第二个”,m_窗格);
m_root=qml->createRootObject();
m_pane=m_root->findChild(“mynavigation”);//已更改
应用->设置场景(m_根);
}
void ApplicationUI::sendRequest()
{
如果(m_活动)
返回;
m_active=真;
emit activeChanged();
m_succeed=假;
QNetworkAccessManager*networkAccessManager=新的QNetworkAccessManager(此);
QNetworkRequest请求(m_urllink);
QNetworkReply*reply=networkAccessManager->get(请求);
bool ok=connect(应答,信号(finished()),this,插槽(onFinished());
Q_断言(ok);
Q_未使用(正常);
}
void ApplicationUI::onFinished()
{
m_succeed=真;
QNetworkReply*reply=qobject_cast(发送方());
QString反应;
如果(回复->属性(QNetworkRequest::HttpStatusCodeAttribute).toInt()==200)
{
JsonDataAccess jda;
QVariantMap=jda.loadFromBuffer(reply->readAll()).toMap();
QVariantList addresses=map[“RegistrationResult”].toList();
qDebug()second.qml应该是一个页面,你能粘贴那个qml吗?我猜你在这个代码执行页面上出错了*new\u Page=qml->createRootObject();请检查qml文件..我添加了上面的代码..请帮助解决此问题..我是blackberry的新手..main.qml不是导航窗格,您无法将页面推送到简单的容器中。同时粘贴second.qml我将尝试在此处为uGet设置我的完整应用程序源代码..您会有一些想法..1.我使用Json web服务获得响应2.当我按下一个按钮,当响应成功时,我必须按到新页面,否则必须显示一个祝酒词--已注册3.我将收到“电子邮件id已注册”或“已注册成功”4.当我注册成功时,我只需按一下新页面OK..更改:QmlDocument*qml=QmlDocument::create(“asset:///second.qml)。母公司(本公司).property(“app”,this);Page*new\u Page=qml->createRootObject();qml->setContextProperty(“app”,this);m\u pane->push(new\u Page);你可以压缩你的项目文件夹并链接我,git repo看起来很大。好的,最终修改。对我来说效果很好:::删除一行qml->setContextProperty(“app”,this);最终代码是:("asset:///second.qml).parent(this).property(“app”,this);Page*new_Page=qml->createRootObject();m_pane->push(new_Page);删除了sendRequest()中的此行-->qml->setContextProperty(“app”,this);…但应用程序也会关闭
ApplicationUI::ApplicationUI(bb::cascades::Application *app) :
QObject(app)
, m_succeeded(false)
, m_active(false)
{
QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
qml->setContextProperty("app", this);
//qml->setContextProperty("second", m_pane);
m_root = qml->createRootObject<AbstractPane>();
m_pane = m_root->findChild<NavigationPane*>("mynavigation"); // changed
app->setScene(m_root);
}
void ApplicationUI::sendRequest()
{
if (m_active)
return;
m_active = true;
emit activeChanged();
m_succeeded = false;
QNetworkAccessManager* networkAccessManager = new QNetworkAccessManager(this);
QNetworkRequest request(m_urllink);
QNetworkReply* reply = networkAccessManager->get(request);
bool ok = connect(reply, SIGNAL(finished()), this, SLOT(onFinished()));
Q_ASSERT(ok);
Q_UNUSED(ok);
}
void ApplicationUI::onFinished()
{
m_succeeded = true;
QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());
QString response;
if (reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt() == 200)
{
JsonDataAccess jda;
QVariantMap map = jda.loadFromBuffer(reply->readAll()).toMap();
QVariantList addresses = map["RegistrationResult"].toList();
qDebug() <<"Full Result is = "<<map["RegistrationResult"].toString();
QString m_temperature;
QString result;
result = map["RegistrationResult"].toString();
m_temperature=result.section(':', 0, 0);
m_urlResult = result;
emit urlResultChanged();
qDebug()<<m_urlResult;
qDebug()<<"\n\n\n";
if(result == "EMAIL ID ALREADY EXISTS")
{
qDebug() << " New Registration Result is " <<m_temperature;
qDebug() <<map["RegistrationResult"].toString();
}
else if(result != "EMAIL ID ALREADY EXISTS")
{
QString empid;
QString empid_no;
QString::SectionFlag flag = QString::SectionSkipEmpty;
result = map["RegistrationResult"].toString();
//empid=m_temperature.section(':', 1, 1);
empid_no = map["RegistrationResult"].toString();;
empid_no=empid_no.section(':', 2, 2);
qDebug()<<"Emd ID = "<<empid_no;
qDebug()<<"Company ID"<<result.section(':', 4, 4);
QmlDocument *qml = QmlDocument::create("asset:///second.qml").parent(this);
qml->setContextProperty("app", this); // changed
Page *new_Page = qml->createRootObject<Page>();
m_pane->push(new_Page);
**?????????????????????????????**
}