4

我之前曾发布过关于让 Google 地图在 WebView 中显示的努力。我发现我需要安装 OpenSSL,以便 HTTPS 可以用于某些 Google API。

这一切都很好,但现在在另一台机器上我很难配置 Qt 以使用系统代理。对于这个,我们有一个不需要身份验证的系统代理和一个需要身份验证的系统代理。默认代理是需要身份验证的代理。

我有以下代码来指定代理:

#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include <QNetworkProxy>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QNetworkProxy proxy;
     proxy.setType(QNetworkProxy::HttpProxy);
     proxy.setHostName("url.of.proxy.not.requiring.authentication");
     proxy.setPort(8080);
     QNetworkProxy::setApplicationProxy(proxy);

    QtQuick2ApplicationViewer viewer;
    viewer.setMainQmlFile(QStringLiteral("qml/Maps/main.qml"));
    viewer.showExpanded();

    return app.exec();
}

当我运行此应用程序时,我在 WebView 中显示一个网页,其内容状态为错误 407,因为代理需要身份验证,并且此页面中指定的代理地址是默认地址,而不是我明确告诉 Qt 使用的地址。

如何让 Qt 使用我希望它使用的实际代理?这台机器上的所有其他应用程序都可以使用它,为什么不能使用 Qt?

4

2 回答 2

2

显然 QML WebView 不使用 Qt 代理设置。我不知道这是预期的行为还是只是坏了。尝试按照本讨论http_proxy中的建议设置环境变量。

于 2013-07-24T08:32:45.483 回答
0

这段代码需要在第一个 Qt 对象内部传递,称为 like QMainWindowor QWidget,在构造函数内部是一个不错的选择。

于 2018-05-15T22:47:57.903 回答