我正在使用qt和qtWebkit编写应用程序,该应用程序用于访问Web应用程序。在Web应用程序中,我们有各种需要处理的自定义协议,例如: 'myprotocol:VAR1 = 1&安培; VAR2 = 2'。使用此协议时,我的应用程序应该打开另一个程序。如何检测其中一个自定义协议何时被命中?
我已经看到了类似问题的一些答案,涉及“重新实现QWebPage :: acceptNavigationRequest”,但我不知道如何做到这一点。
还有其他人必须在qtWebkit中处理自定义协议吗?
答案 0 :(得分:2)
如果您收听“完成(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());
}