我之前发布过关于让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?
答案 0 :(得分:2)
显然QML WebView不使用Qt代理设置。我不知道这是否是预期的行为,或者它只是被打破了。尝试按照this discussion中的建议设置http_proxy
环境变量。
答案 1 :(得分:0)
此代码需要在名为function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }
async function test() {
console.log("1");
console.log("2");
await sleep(2000);
console.log("3");
console.log("4");
await sleep(2000);
console.log("5");
}
test();
或QMainWindow
的第一个Qt对象内传递,构造函数内部是一个不错的选择。