QT バージョン 5.15.0. MinGW 8.1.0、64 ビット
この問題は、QML ファイルにマップ プラグインをロードする場合にのみ発生するようです。以下はコードの抜粋です。少なくとも 2 秒間待機すると、GUI がフリーズします。基本的に、GUI スレッドは 2 秒間ブロックされます。別のスレッドで qmlView->setSource(QUrl("qrc:/maps/map.qml")) を呼び出そうとしましたが、クラッシュしました。同じ GUI スレッドであるため、ローダー QML タイプが機能するかどうかはわかりません。
プロバイダーを変更すると、メイン GUI もフリーズします。
GUI がフリーズしない 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 ローダーを使用しようとしましたが、以下を参照してください。ただし、GUI はまだフリーズしています。
Loader {
id: windowLoader
source: "qrc:/maps/map.qml"
focus: true
asynchronous: true
//property bool valid: item !== null
}