Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-94258

Qt: QML Iterate through listmodel in QML GridView - ScreenInfo getting created multiple time under RootWindow

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P3: Somewhat important
    • None
    • 5.12, 5.14.0 RC2
    • None
    • Linux
    • Linux/X11, Linux/Yocto, Windows

    Description

      Observed several ScreenInfo objects under QQmlApplicationEngine->Window

      Observed only in Debug mode while debugging

      Steps to reproduce:

      Code snippet -

      ContactModel.qml
      import QtQuick 2.0
      
       ListModel {
      
           ListElement {
               name: "1"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "2"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "3"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "4"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "5"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "6"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "7"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "8"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "9"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "10"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "11"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "12"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "13"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "14"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "15"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "16"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "17"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "18"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "19"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "20"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "21"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "22"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "23"
               portrait: "pics/portrait.png"
           }
           ListElement {
               name: "24"
               portrait: "pics/portrait.png"
           }
       }
      
      main.qml
      import QtQuick 2.12
      import QtQuick.Window 2.12
      
      Window {
          width: 640
          height: 480
          visible: true
          title: qsTr("Hello World")
      
          Rectangle {
               width: 280; height: 180
               anchors.centerIn: parent
               color: "red"
      
               Component {
                   id: contactDelegate
                   Item {
                       width: grid.cellWidth; height: grid.cellHeight
                       Column {
                           anchors.fill: parent
                           Image { source: portrait; anchors.horizontalCenter: parent.horizontalCenter }
                           Text { text: name; anchors.horizontalCenter: parent.horizontalCenter }
                       }
                   }
               }
      
               GridView {
                   id: grid
                   anchors.fill: parent
                   cellWidth: 80; cellHeight: 80
                   model: ContactModel {}
                   delegate: contactDelegate
                   highlight: Rectangle { color: "lightsteelblue"; radius: 5 }
                   focus: true
                   clip: true
                   snapMode: GridView.SnapToRow
                   flickableDirection: Flickable.VerticalFlick
                   boundsBehavior: Flickable.StopAtBounds
                   Component.onCompleted: {
                       console.log("Gridview Constructed...")
                   }
               }
           }
      }
      
      

      Steps:

      ->keep debug point at console.log("Gridview Constructed...")

      ->Start debugging

      -> press F5 to continue

      -> observe the debug window, travel grid items multiple times

      > multiple ScreenInfo under QQmlApplicationEngine>Window

      -> ScreenInfo objected never destroyed

      -> please find the attached screenshot for more info

      -> please find the attached complete example code project

      Attachments

        1. grid.zip
          8 kB
        2. ScreenInfo-testapp-1.jpg
          ScreenInfo-testapp-1.jpg
          316 kB
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            qt.team.quick.subscriptions Qt Quick and Widgets Team
            rajaanki RajaSekhara Reddy A
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes