我正在完成Getting Started with Qt Quick,其中包含许多远程检索资源的示例。这是从网上下载字体的一个(来自第5.1章):
import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
visible: true
width: 250
height: 100
FontLoader {
id: myFont
source: "http://qmlqb.tk/downloads/ds-digi.ttf"
}
Text {
id: myText
anchors.fill: parent
font.family: myFont.name
font.pointSize: 24
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: "Hello, World!"
}
}
不幸的是,我从需要身份验证的严酷防火墙后面运行这些示例,并且只允许连接到端口80/443上的远程主机。 This question提供了一种我并不完全满意的解决方法。如果我修改它的样板main.cpp
,上面的例子工作正常:
--- main.cpp.orig 2016-12-05 17:26:20.941009088 -0500
+++ main.cpp 2016-12-05 17:26:26.585009088 -0500
@@ -1,12 +1,21 @@
#include <QGuiApplication>
#include <QQmlApplicationEngine>
+#include <QNetworkProxy>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
+ QNetworkProxy proxy;
+ proxy.setType(QNetworkProxy::HttpProxy);
+ proxy.setHostName("10.234.56.78");
+ proxy.setPort(8080);
+ proxy.setUser("stickyjoe");
+ proxy.setPassword("s3kr3tpAsswd");
+ QNetworkProxy::setApplicationProxy(proxy);
+
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
但是......似乎我需要为每个示例执行此操作,这有点令人沮丧。我更倾向于简单地设置http_proxy
/ https_proxy
个变量,如之前引用的问题answer中所述。
export http_proxy='http://stickyjoe:s3kr3tpAsswd@10.234.56.78:8080/'
,然后从那里手动启动qtcreator
,示例仍会打印&#34; Hello,World!&#34;使用默认字体而不是http://qmlqb.tk/downloads/ds-digi.ttf中的字体。我还在 Projects - &gt;中广泛点击了。建设与发展从Qt Creator中运行,以确保在 Build 和 Run 环境中都设置了变量。它是,但是...应用程序似乎仍然完全忽略它。
是否有某种方法可以强制QtQuick / QML应用程序兑换http_proxy
变量,以便我不必修补每个示例?