首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在QML (不使用qrc )中设置离线OSM目录的正确路径?

如何在QML (不使用qrc )中设置离线OSM目录的正确路径?
EN

Stack Overflow用户
提问于 2021-06-14 02:54:24
回答 1查看 149关注 0票数 0

我想有一个与瓷砖在.exe文件夹中的realTiles文件夹。

当然,我可以将文件夹添加到qrc中,一切都很好:

代码语言:javascript
运行
复制
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

我试着使用插件参数的值:

代码语言:javascript
运行
复制
value: 'file:///' + applicationDirPath + '/../realTiles/'
value: 'file:///realTiles/'
value: 'file:/realTiles/'

还有很多其他的。当然我也会犯错。这个问题的真正解决方案是什么?

编辑:

代码语言:javascript
运行
复制
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/'
            }
        }
    }
}
代码语言:javascript
运行
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-14 20:04:09

尝试给出完整的路径

代码语言:javascript
运行
复制
        PluginParameter {
            name: "osm.mapping.cache.directory"
            value: "C:/Users/UserName/Desktop/OSMCache"
        }

我已经尝试改变它工作的缓存目录。因此,请在value字段中提供完整路径。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67961689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档