Qt QDesktopServices :: openUrl — запустить браузер со значениями записей

Я пытаюсь написать простое приложение, которое запустит браузер и отправит его URL на основе ввода пользователя.

QDesktopServices::openUrl(QUrl(url));

Тем не менее, я хотел бы передать переменные вместе с любым URL они отправляют, используя POST,
За GETвсе, что мне нужно сделать, это просто вставить значения в URL строка, но как мне добавить POST переменные ?.

Благодарю.

3

Решение

От официальная документация:

bool QDesktopServices :: openUrl (const QUrl & url) [статические]

Открывает указанный URL в соответствующем веб-браузере для окружения рабочего стола пользователя и возвращает true в случае успеха; в противном случае возвращает false.

Если URL является ссылкой на локальный файл (т. Е. Схема URL является «файлом»), то он будет открыт с помощью подходящего приложения вместо веб-браузера.

Короткий ответ: он не был предназначен для управления сетью. Для этого уже можно было бы использовать QNetworkAccessManager, Это был просто удобный способ добавить поддержку для открытия URL, так как в противном случае это потребовало бы совсем немного работы. Не было никаких дальнейших планов, чтобы это скопировать QtNetwork ближе.

Таким образом, я бы предложил использовать что-то вроде этого, чтобы добиться работы с методами post, указав ваш URL:

QUrlQuery urlQuery;
urlQuery.addQueryItem("param1", "value1");
urlQuery.addQueryItem("param2", "value2");
QUrl url = QUrl("http://foo.com");
QNetworkRequest networkRequest(url);
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
networkManager->post(networkRequest, urlQuery.toString(QUrl::FullyEncoded).toUtf8());
1

Другие решения

QDesktopServices не был разработан для этого, я бы предложил сделать ваш HTTP POST, используя QNetworkAccessManager::post вместо.

Затем вы можете взять некоторую информацию из ответа HTTP, чтобы открыть браузер рабочего стола, если это необходимо.

3

По вопросам рекламы [email protected]