2012-12-12 120 views
1

我正在编写一个应用程序,使用qt和qtWebkit,它用于访问Web应用程序。在Web应用程序中,我们有各种需要处理的自定义协议,例如'myprotocol:var1 = 1 & var2 = 2'。当使用这个协议时,我的应用程序应该打开另一个程序。如何检测这些自定义协议中的一个何时被击中?QtWebkit:如何处理自定义协议

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

是否有其他人不得不在qtWebkit中处理自定义协议?

回答

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()); 
} 
+1

谢谢,这工作。 – user1578653