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

ScrollView: Binding loop detected for property "visible" with dynamic content

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P2: Important
    • None
    • 6.2.0
    • Quick: Controls 2
    • None
    • Windows

    Description

      When trying to use ScrollView with content that fills ScrollView, but has some minimum width/height, there are errors printed and scrollbars don't work as expected, when main window is resized. The errors are:

      qrc:/qt-project.org/imports/QtQuick/Controls/Windows/ScrollView.qml:60:27: QML ScrollBar: Binding loop detected for property "visible"

       

      1) Exapmle, which also prints "QML ScrollView: Binding loop detected for property "implicitHeight"" for some reason

      Window {
          width: 400
          height: 400
          visible: true
      
          ScrollView {
              id: scrollId
              anchors.fill: parent
      
              Rectangle {
                  id: contentId
                  color: "blue"
                  implicitWidth: scrollId.width < 300 ? 300 : scrollId.width
                  implicitHeight: scrollId.height < 300 ? 300 : scrollId.height
              }
          }
      }
      

      2) Example has the same result, but without "implicitHeight" error.

      Window {
          width: 400
          height: 400
          visible: true
      
          ScrollView {
              id: scrollId
              anchors.fill: parent
      
              contentWidth: contentId.implicitWidth
              contentHeight: contentId.implicitHeight
      
              Rectangle {
                  id: contentId
                  color: "blue"
                  implicitWidth: scrollId.width < 300 ? 300 : scrollId.width
                  implicitHeight: scrollId.height < 300 ? 300 : scrollId.height
              }
          }
      }
      

      3) Another example, same result.

      Window {
          width: 400
          height: 400
          visible: true
      
          ScrollView {
              id: scrollId
              anchors.fill: parent
      
              contentWidth: width < 300 ? 300 : width
              contentHeight: height < 300 ? 300 : height
      
              Rectangle {
                  id: contentId
                  color: "blue"
                  anchors.fill: parent
              }
          }
      }

       

      4) This example for some reason works as expected regarding the scrollbars, BUT still prints the "visible binding" errors (although much less often)

      Window {
          width: 400
          height: 400
          visible: true
      
          ScrollView {
              id: scrollId
              anchors.fill: parent
      
              Rectangle {
                  id: contentId
                  color: "blue"
                  implicitWidth: parent.parent.width < 300 ? 300 : parent.parent.width
                  implicitHeight: parent.parent.height < 300 ? 300 : parent.parent.height
              }
          }
      }
      

      If I remember correctly, then I had this problem in Qt 5 too.

       

      Attachments

        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
            chocis Janis Coders
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes