QtWebkit:如何处理自定义协议

时间:2012-12-12 15:19:57

标签: c++ qt protocols qtwebkit

我正在使用qt和qtWebkit编写应用程序,该应用程序用于访问Web应用程序。在Web应用程序中,我们有各种需要处理的自定义协议,例如: 'myprotocol:VAR1 = 1&安培; VAR2 = 2'。使用此协议时,我的应用程序应该打开另一个程序。如何检测其中一个自定义协议何时被命中?

我已经看到了类似问题的一些答案,涉及“重新实现QWebPage :: acceptNavigationRequest”,但我不知道如何做到这一点。

还有其他人必须在qtWebkit中处理自定义协议吗?

1 个答案:

答案 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());
}