On 6/12/2021 1:29 PM, Nicholas Yue wrote:
I have now moved the code into a small UI test app so there is already a
Qt loop in the main app but it stopped working (status code not printed
out) again, do I have to retain the app.exec() and app.exit() ?
Probably because your networkManager goes out of scope as soon as the
doSubmit() function returns.
My example was for a quick one-file demo, not a real application. You
have to figure out how to use signals and slots properly, among other
things. And no, of course you wouldn't put an app.exec() into your UI
form. You _could_ app.exit() from a signal handler (or wherever), but
I'm guessing that's not what you want. I would urge you to understand
what each part of an example does before just sticking it in some other
code.
Regards,
-Max
```
#include"GForm.h"
#include"ui_form.h"
#include<QVBoxLayout>
#include<QUiLoader>
#include<QFile>
#include<QApplication>
#include<QDirIterator>
#include<QDebug>
#include<QFile>
#include<QClipboard>
#include<QtNetwork/QNetworkRequest>
#include<QtNetwork/QNetworkAccessManager>
#include<QUrlQuery>
#include<QDebug>
#include<QNetworkReply>
#include<QCoreApplication>
#include<QThread>
#include<iostream>
GForm::GForm(QWidget*parent)
:QWidget(parent)
,ui(newUi::Form)
{
ui->setupUi(this);
connect(ui->cancel_pushButton,SIGNAL(clicked()),this,SLOT(close()));
connect(ui->submit_pushButton,SIGNAL(clicked()),this,SLOT(doSubmit()));
}
GForm::~GForm()
{
deleteui;
}
voidGForm::doSubmit()
{
QStringname=ui->name_lineEdit->text();
QStringmessage=ui->message_lineEdit->text();
QStringemail=ui->email_lineEdit->text();
qDebug()<<QString("DoSubmission[message=%1,name=%2,email=%3]").arg(message).arg(name).arg(email);
{
//Googleformsubmission
QUrlQuerypostData;
postData.addQueryItem("entry.305082368",message);
postData.addQueryItem("entry.1264643879",name);
postData.addQueryItem("entry.1004643569",email);
QUrlserviceUrl("https://docs.google.com/forms/d/1ngIkIaj0CEdJl1ucL9JgVq82rUquPbKPGt4066bKscA/formResponse");
QNetworkRequestrequest(serviceUrl);
request.setHeader(QNetworkRequest::ContentTypeHeader,
"application/x-www-form-urlencoded");
QNetworkAccessManagernetworkManager;
QObject::connect(&networkManager,&QNetworkAccessManager::finished,
[&](QNetworkReply*reply){
intstatus=
reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
qDebug()<<"Gotstatus:"<<status<<"Data:"<<reply->readAll();
//etc....
reply->deleteLater();
});
networkManager.post(request,
postData.toString(QUrl::FullyEncoded).toUtf8());
}
}
```
_______________________________________________
Interest mailing list
[email protected]
https://lists.qt-project.org/listinfo/interest