Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. QVariantList Repeater
Qt 6.11 is out! See what's new in the release blog

QVariantList Repeater

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
3 Posts 2 Posters 1.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    Tyber
    wrote on last edited by
    #1

    Hello,
    I try to pass a QJsonArray from C++ to QML via QVariantList and mark positions on a map. For these purpose I developed this code in QML:

    Map {
          id: id_quizMap
          plugin: mapPlugin
    
          Repeater {
              model: quizfiles.getLocations
    
              MapQuickItem {
                  id: id_marker
                  anchorPoint.x: id_positionImage.width/2
                  anchorPoint.y: id_positionImage.height
                  coordinate: QtPositioning.coordinate(this.value("Lat"), this.value("Long"))
    
                  sourceItem: Image {
                      id: id_quizImage
                      width: sourceSize.width*2
                      height: sourceSize.height*2
                      source: "images/map-question-marker.svg"
                  }
              }
          }
      }
    

    if I output the array returned of quizFiles.getLocations i get this output:

    D libXy.so: QVariant(QVariantMap, QMap(("GameFolder", QVariant(QString, "Titel1"))("GameType", QVariant(QString, "Quiz"))("Group", QVariant(double, 1))("Lat", QVariant(QString, "49.452943614253059"))("LocationName", QVariant(QString, "THN"))("Long", QVariant(QString, "11.097496110845555"))("Status", QVariant(QString, "Open"))))
    D libXy.so: QVariant(QVariantMap, QMap(("GameFolder", QVariant(QString, "story1"))("GameType", QVariant(QString, "Story"))("Group", QVariant(double, 1))("Lat", QVariant(QString, "49.452384329402705"))("LocationName", QVariant(QString, "see"))("Long", QVariant(QString, "11.100266172564261"))("Status", QVariant(QString, "Open"))))
    D libXy.so: QVariant(QVariantMap, QMap(("GameFolder", QVariant(QString, "sdvgs"))("GameType", QVariant(QString, "Quiz"))("Group", QVariant(double, 2))("Lat", QVariant(QString, "49.451013526379832"))("LocationName", QVariant(QString, "bridge"))("Long", QVariant(QString, "11.097201596953937"))("Status", QVariant(QString, "Open"))))
    D libXy.so: QVariant(QVariantMap, QMap(("GameFolder", QVariant(QString, "dfbsdg"))("GameType", QVariant(QString, "Quiz"))("Group", QVariant(double, 2))("Lat", QVariant(QString, "49.452431345885934"))("LocationName", QVariant(QString, "mensa"))("Long", QVariant(QString, "11.094536577839790"))("Status", QVariant(QString, "Open"))))
    D libXy.so: Locations:  QVariant(QVariantMap, QMap(("GameFolder", QVariant(QString, "fbgfnfghn"))("GameType", QVariant(QString, "Quiz"))("Group", QVariant(double, 3))("Lat", QVariant(QString, "49.457294201293251"))("LocationName", QVariant(QString, "vcasdcvasj"))("Long", QVariant(QString, "11.058210966587012"))("Status", QVariant(QString, "Open"))))
    D libXy.so: Locations:  QVariant(QVariantMap, QMap(("GameFolder", QVariant(QString, "Ziel"))("GameType", QVariant(QString, ""))("Group", QVariant(double, 4))("Lat", QVariant(QString, "49.455508850240328"))("LocationName", QVariant(QString, "Ziel"))("Long", QVariant(QString, "11.097349760532325"))("Status", QVariant(QString, "Open"))))
    

    But there is no marker on the map and I dont know, whats my fault.

    1 Reply Last reply
    0
    • GrecKoG Offline
      GrecKoG Offline
      GrecKo
      Qt Champions 2018
      wrote on last edited by
      #2

      Linking you one of my answer on SO https://stackoverflow.com/a/45550835/2788674

      TL;DR: use MapItemView instead of Repeater in a Map.

      1 Reply Last reply
      0
      • T Offline
        T Offline
        Tyber
        wrote on last edited by Tyber
        #3

        Thanks for your answer GrecKo, know it works with this code:

        Map {
              id: id_quizMap
              plugin: mapPlugin
        
              MapItemView {
                  id: id_mapViewQuizMarker
                  model: quizfiles.getLocations
                  delegate: id_quizDelegate
              }
        
              Component {
                  id: id_quizDelegate
        
                  MapQuickItem {
                      id: id_marker
                      anchorPoint.x: id_positionImage.width/2
                      anchorPoint.y: id_positionImage.height
                      coordinate: QtPositioning.coordinate(id_mapViewQuizMarker.model[index].Lat, id_mapViewQuizMarker.model[index].Long)
        
                      sourceItem: Image {
                          id: id_quizImage
                          width: sourceSize.width*2
                          height: sourceSize.height*2
                          source: "images/map-question-marker.svg"
                      }
                  }
              }
          }
        
        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved