簡體   English   中英

Qt-QQuickWidget setSource無需凍結UI

[英]Qt - QQuickWidget setSource without freezing UI

我正在管理一個項目,在該項目中,我必須從數據庫中管理客戶數據,而且我必須添加一個地圖小部件,該部件顯示客戶的位置(通過從數據庫中獲取他的坐標)..我創建了一個小原型來學習如何使用QML + Map Plugin,因為我以前從未使用過它們,所以我決定使用QQuickWidget來顯示我的地圖(該地圖的QML取自Qt的示例,並進行了一些修改)..但是當我執行程序時,我遇到了一個問題,顯示UI需要花費幾分鍾,我認為這與我緩慢的互聯網連接以獲取地圖數據及所有信息有關,但是我在這里需要顯示UI和eveything(執行數據庫查詢等)。 所以我需要的是在正常處理UI的同時執行Map的小部件(獲取地圖),以便用戶可以選擇,搜索,刪除並做任何他想做的事情(該地圖的小部件將為空,因為尚未加載),直到地圖已准備好顯示。

這是我的代碼:MainWindow:

ui->quickWidget->setSource(QUrl("qrc:/new/prefix1/main.qml"));
QObject *object = ui->quickWidget->rootObject();
object->setProperty("_title" , "Oslo");
object->setProperty("_x" , "59.93");
object->setProperty("_y" , "10.76"); 

地圖的QML腳本(main.qml):

import QtQuick 2.0
import QtQuick.Window 2.0
import QtLocation 5.6
import QtPositioning 5.6

Item
{
    width: 512
    height: 512
    visible: true
    property var _x: 0
    property var _y: 0
    property string _title: ""

    Plugin
    {
        id: mapPlugin
        name: "osm"
    }

    Map
    {
        anchors.fill: parent
        plugin: mapPlugin
        center: QtPositioning.coordinate(_x , _y)
        zoomLevel: 15

        ListModel
        {
            id: locationModel
            ListElement {lat: 0; lon: 0; color: "blue"}
            ListElement {lat: 5; lon: 12.5; color: "green"}
            ListElement {lat: 10; lon: 25; color: "red"}
        }

        MapItemView
        {
            model: locationModel
            delegate: MapQuickItem
            {
                coordinate: QtPositioning.coordinate(_x , _y)
                anchorPoint: Qt.point(10 , 10)
                sourceItem: Column
                {
                    Image {source: "marker.png"}
                    Text {text: _title}
                }
            }
        }
    }
}

謝謝 !

我發現問題是由於缺少OpenSSL庫引起的。 您可以在此處閱讀相關主題:

解決方案,對我有用:

  • https://indy.fulgan.com/SSL/下載.zip文件
  • 提取libeay32.dll和ssleay32.dll
  • 將它們復制到qt二進制文件夾(例如,在我的情況下\\ QT \\ Qt5.11.0 \\ 5.11.0 \\ mingw53_32 \\ bin \\)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM