我们正在开发我们的第一个Qt/QML应用程序(尝试技术).虽然技术看起来很有前景,但我们面临着许多意想不到的奇怪问题,这些问题在一开始就几乎放弃了.
这里有一个这样的问题.
我们希望应用程序具有以下文件夹布局:
--> ApplicationFolder
|--> qml // QML files (also structured by subfolders)
|--> resources // Application resources (images, sounds, data-files, etc.)
| |--> images // Image resources (also structured by subfolders)
| |--> data // Different data files
| |--> ... // Other resources
|--> Application.exe // Application executable
|--> *.dll // DLLs application depends on
Run Code Online (Sandbox Code Playgroud)
问题是,为了指定ImageQML项目的图像文件,我们必须使用相对于QML文件的路径?!这绝对是疯了.在开发过程中,文件有时会在文件夹之间移动(你移动QML文件并且必须修复它拥有的所有路径?!); 一些不同的QML文件必须引用相同的图像(相同的图像资源,但不同的QML文件中的实际路径不同).
所以问题是:如何指定相对于应用程序文件夹的图像路径?有可能吗?
提前致谢!
PS.在我们的案例中,使用Qt的资源系统(当资源嵌入到可执行文件中时)不是一个选项.我们需要磁盘上的原始资源(包括QML文件本身,至少在开发阶段).
PPS.在花了一整天的时间通过文档/ google/stackoverflow解决了这个问题后写了这个问题; 根本没有成功(大多数示例使用资源嵌入,其他示例太简单,只使用相对路径).
Mit*_*tch 21
如果您不能为图像使用.qrc文件,可以尝试这样做:
#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();
}
Run Code Online (Sandbox Code Playgroud)
在QML中,您可以:
Image {
source: "file:///" + applicationDirPath + "/../resources/images/image.png"
}
Run Code Online (Sandbox Code Playgroud)
请注意,此代码未经过测试.
| 归档时间: |
|
| 查看次数: |
19468 次 |
| 最近记录: |