0

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
}
4

0 に答える 0