让QtQuick / QML app尊重http_proxy变量吗?

时间:2016-12-05 23:01:03

标签: qt qml qtquick2

我正在完成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变量,以便我不必修补每个示例?

0 个答案:

没有答案