大家好!QML:如何從C++代碼正確傳遞屬性到PluginParameter值?
我有通過C++
到QML
傳遞屬性值的問題。我的項目是桌面應用程序,必須與Windows
下的地圖一起使用。所以,在閱讀文檔後,我通過QML
使用Qt Location找到了最佳解決方案。我選擇了OSM Plugin。
一切正常,但我需要手動定位緩存到自定義目錄。所以爲此,我想將C++
代碼中的此類屬性(cachePath
)值傳遞給QML
。的C++代碼
部分:QML代碼
QQuickView *view = new QQuickView;
view->rootContext()->setContextProperty("cachePath", "C:/111/");
view->setSource(QUrl(QStringLiteral("qrc:/qml/OSMView.qml")));
重要組成部分:
Map
{
zoomLevel: 10
plugin: Plugin
{
name: "osm"
PluginParameter { name: "osm.mapping.highdpi_tiles"; value: true }
PluginParameter { name: "osm.mapping.offline.directory"; value: cachePath }
PluginParameter { name: "osm.mapping.cache.directory"; value: cachePath }
}
<... nevermind ...>
}
所以調試說,一切都好和財產被傳遞。但是在使用此自定義目錄中的地圖後沒有新的貼圖。
但是,如果我手動輸入value: "C:/111/"
- 一切工作正常,目錄補充新的緩存切片。
可能是什麼問題?
感謝您的提前!
你有任何錯誤/警告消息控制檯?如果我用C++改變插件參數運行類似的例子,我會得到以下消息:'QML Map:Plugin是一次寫入屬性,不能再次設置' – folibis
@folibis,no我在控制檯中沒有這樣的消息。爲什麼我應該?我首先設置屬性,然後才加載QML。對於這個插件參數,它必須是第一個和最後一個值。 – someoneinthebox
它似乎會在5.9.2中修復 –