我想有一个与瓷砖在.exe文件夹中的realTiles
文件夹。
当然,我可以将文件夹添加到qrc中,一切都很好:
import QtQuick 2.10
import QtQuick.Window 2.11
import QtLocation 5.12
import QtPositioning 5.12
...
Map {
id: map
anchors.fill: parent
activeMapType: map.supportedMapTypes[0]
zoomLevel: 14
plugin: Plugin {
name: 'osm';
PluginParameter {
name: 'osm.mapping.offline.directory'
value: ':/realTiles/'
}
}
}
因此,我将文件夹realTiles
复制到包含.exe的文件夹和.exe上的文件夹中。例如,我将文件夹realTiles
放在以下两个位置:
C:/Users/tom/Desktop/app/build-OsmOffline-Desktop_Qt_5_15_1_MinGW_64_bit-Release/release/realTiles
C:/Users/tom/Desktop/app/build-OsmOffline-Desktop_Qt_5_15_1_MinGW_64_bit-Release/realTiles
我试着使用插件参数的值:
value: 'file:///' + applicationDirPath + '/../realTiles/'
value: 'file:///realTiles/'
value: 'file:/realTiles/'
还有很多其他的。当然我也会犯错。这个问题的真正解决方案是什么?
编辑:
main.qml
import QtQuick 2.10
import QtQuick.Window 2.11
import QtLocation 5.12
import QtPositioning 5.12
Window {
id: win
objectName: "window"
visible: true
width: 512
height: 512
Map {
id: map
anchors.fill: parent
activeMapType: map.supportedMapTypes[0]
plugin: Plugin {
name: 'osm';
PluginParameter {
name: 'osm.mapping.offline.directory'
//value: ':/realTiles/'
value: 'file:///' + applicationDirPath + '/../realTiles/'
}
}
}
}
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QStandardPaths>
#include <QQmlContext>
int main(int argc, char *argv[])
{
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("applicationDirPath", QGuiApplication::applicationDirPath());
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}
发布于 2021-06-14 20:04:09
尝试给出完整的路径
PluginParameter {
name: "osm.mapping.cache.directory"
value: "C:/Users/UserName/Desktop/OSMCache"
}
我已经尝试改变它工作的缓存目录。因此,请在value字段中提供完整路径。
https://stackoverflow.com/questions/67961689
复制相似问题