我需要在qml窗口中加载图片。通常我从资源文件加载它,它将与我的.pro文件一起部署。但由于图像文件夹太大,加载时间更长。是否有任何方法可以使用qtquick应用程序部署本地文件夹?如何在qml文件中引用图像。(图像的路径)。我使用的是Qt 5.5版本。
答案 0 :(得分:0)
您可以使用qmake将图像文件复制到构建目录,以便应用程序可以找到它们。我目前在我的项目中使用this solution,因为我不想使用make install。你应该阅读这个答案来理解它,但是在这里给它一些背景:
# using shell_path() to correct path depending on platform
# escaping quotes and backslashes for file paths
copydata.commands = $(COPY_FILE) \"$$shell_path($$PWD\\archive.png)\" \"$$shell_path($$OUT_PWD)\"
first.depends = $(first) copydata
export(first.depends)
export(copydata.commands)
QMAKE_EXTRA_TARGETS += first copydata
正如答案所说,这仅适用于一个文件,因此如果要复制整个图像目录,则需要使用$(COPY_DIR)
。这可能不是最好的方法,但qmake很难使用,所以当它对我有用时,我很高兴。 :)
一旦你能够正常工作,你可以使用this回答来引用文件系统上的图像:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("applicationDirPath", QGuiApplication::applicationDirPath());
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec(); }
QML:
Image {
source: "file:///" + applicationDirPath + "/images/image.png"
}
这将设置一个QML上下文属性,该属性指向运行可执行文件的目录,然后使用该目录构成映像的路径。
请注意,如果您的大多数或所有图片都是PNG,那么您可以看到rcc的compression options是否有助于执行可执行文件的大小:
默认情况下会压缩资源(采用ZIP格式)。它是 可以关闭压缩。如果您的资源,这可能很有用 已包含压缩格式,例如.png文件。你做这个 通过给出-no-compress命令行参数。
rcc -no-compress myresources.qrc
rcc还可以控制压缩。你可以指定 压缩级别和要考虑的阈值级别 压缩文件,例如:
rcc -compress 2 -threshold 3 myresources.qrc