Question about Qhttpserver and QtFuture
Unsolved
General and Desktop
-
Hello, I have writted code like this:
server->route("/promise", [this] (const QHttpServerRequest & request){ writeLog(request.remoteAddress().toString() + ":" + QString::number(request.remotePort()) + " <--- Otrzymano request '/promise'"); auto * watcher = new QFutureWatcher<QHttpServerResponse>(this); connect(watcher, &QFutureWatcher<QHttpServerResponse>::finished, this, [watcher, this, &request]() { writeLog(request.remoteAddress().toString() + ":" + QString::number(request.remotePort()) + " ---> Request '/promise' zakonczony, zwracam odpowiedź"); watcher->deleteLater(); }); QFuture<QHttpServerResponse> future = QtConcurrent::run([&] () { qDebug() << "Long task"; QThread::msleep(1500); qDebug() << "Generating JSON" QJsonDocument jsonDoc2(QJsonObject{ { {"key1", "1"}, {"key2", "2"}, {"key3", "3"} } }); QByteArray jsonData = jsonDoc2.toJson(QJsonDocument::Compact); QHttpServerResponse response(jsonData, QHttpServerResponse::StatusCode::Ok); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); response.setHeader("Access-Control-Allow-Headers", "Origin, Content-Type, Accept"); response.setHeader("Content-Type", "application/json"); return response; }); watcher->setFuture(future); return future; });
and as I understand this route will be in a separate thread, but how can I receive a log information from QtConcurrent::run functon to main thread to show log info in GUI like qDebug() << "Generating JSON"?
-
Hi,
I am not sure to follow you, do you mean you want to get all qDebug messages in a widget ?
That can be done using qInstallMessageHandler. -
Hi, I want to show all log messages in a QPlainTextEdit and save it to log file