QtWebkit: как обрабатывать пользовательские протоколы

Я пишу приложение с использованием qt и qtWebkit, которое используется для доступа к веб-приложению. В веб-приложении у нас есть различные пользовательские протоколы, которые необходимо обрабатывать, например, «Myprotocol: var1 = 1&var2 = 2′ . Когда этот протокол используется, мое приложение должно открыть другую программу. Как я могу обнаружить, когда один из этих пользовательских протоколов поражен?

Я видел некоторые ответы на подобные вопросы, которые включают «повторную реализацию QWebPage :: acceptNavigationRequest», но я не знаю, как это сделать.

Кто-нибудь еще должен был обрабатывать пользовательские протоколы в qtWebkit?

1

Решение

Если вы прослушиваете сигнал «Finished (QNetworkReply *)», который вызывает слот с указанным ниже кодом. Вы можете получить URL протокола из запроса, содержащегося в ответе. Оттуда вы можете проверить, хотите ли вы запустить протокол, и если это так, вы можете запустить приложение, используя QDesktopServices::openUrl(reply->request().url());,

QString scheme = reply->request().url().scheme();
if (scheme == QLatin1String("mailto")
|| scheme == QLatin1String("myprotocol")) {
QDesktopServices::openUrl(reply->request().url());
}
2

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

Других решений пока нет …

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