Qt - QQuickView(), setSource без зависания графического интерфейса
Долгое время пытаясь решить проблему, безуспешно, QT версии 5.15.0. MinGW 8.1.0, 64 бит
Проблема, кажется, возникает только при загрузке плагина карты в файл QML, ниже это фрагмент кода. Вызов qmlView->setSource(QUrl("qrc:/maps/map.qml")); ждет не менее 2 секунд, а затем графический интерфейс зависает. Обычно поток графического интерфейса блокируется на 2 секунды. Я попытался вызвать qmlView-> setSource (QUrl ("qrc: /maps/map.qml")) в отдельном потоке, но потерпел сбой. Не слишком уверен, что QML-тип загрузчика будет работать, потому что это тот же поток графического интерфейса.
Я даже пробовал пример для https://doc.qt.io/qt-5/qtlocation-mapviewer-example.html, когда вы меняете провайдера, основной графический интерфейс также зависает
Есть ли способ загрузить файлы QML, где графический интерфейс не зависает? благодаря
QQuickView * qmlView = new QQuickView();
QQmlEngine * eng = qmlView->engine();
eng->addPluginPath(qApp->applicationDirPath());
qmlView->setSource(QUrl("qrc:/maps/map.qml"));
Файл QML - это
import QtQuick 2.0
import QtQuick.Window 2.0
import QtLocation 5.15
import QtPositioning 5.6
Item {
id: item
anchors.fill: parent
visible: true
Plugin {
id: mapPlugin
name: "osm" // Other mapas are "osm", "mapbox" "mapboxgl", "esri", ...
}
Map {
id: map
anchors.fill: parent
anchors.leftMargin: -84
anchors.topMargin: -47
objectName: "rect"
plugin: mapPlugin
center {
latitude: 52.1619403
longitude: -7.1488692
}
zoomLevel: 14
}
}
После ввода от JarMan я попытался использовать QML Loader, см. Ниже, но графический интерфейс все еще зависает
Loader {
id: windowLoader
source: "qrc:/maps/map.qml"
focus: true
asynchronous: true
//property bool valid: item !== null
}