4

这就是我更改代理的方式:

QNetworkProxy proxy;
proxy.setType(QNetworkProxy::HttpProxy);
proxy.setHostName("ip");
proxy.setPort(8008);

QNetworkProxy::setApplicationProxy(proxy);

如果我在创建 WebView 之前这样做,它可以正常工作。但是,如果我在 QWebView 的生命周期内更改代理,它根本不会加载任何站点。在 QT 中动态更改代理的正确方法是什么?

谢谢。

4

1 回答 1

5

QWebPage::setNetworkAccessManager方法文档说

注意:目前不支持在 QWebPage 使用后更改网络访问管理器。这样做的结果是不确定的。

所以我的猜测是,一旦你设置了一个应用程序范围的代理并且一旦构建了 QWebPage 它就会得到一个 QNetworkAccessManager 并且你不能更改它的代理设置。

作为使用应用程序范围代理的替代方法,您可能可以创建一个新的 QNetworkAccessManager 并使用其 QNetworkAccessManager::setProxy() 方法来设置代理。然后将此 QNetworkAccessManager 实例传递到您的网页。

无论如何,你需要玩它。我希望这有帮助。

于 2011-05-20T14:16:24.727 回答