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. Unable to assign [undefined] to int during customizing ScrollBar
Forum Updated to NodeBB v4.3 + New Features

Unable to assign [undefined] to int during customizing ScrollBar

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
17 Posts 6 Posters 1.5k Views 1 Watching
  • 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.
  • K Kamichanw

    Here is code. This code is adapted from qt doc.

    import QtQuick
    import QtQuick.Controls
    
    Window {
        width: 300
        height: 300
        visible: true
    
        ScrollView {
            id: control
            anchors.fill: parent
            Text {
                text: "ABC"
                font.pointSize: 224
            }
    
            ScrollBar.vertical: ScrollBar {
                height: control.availableHeight
                parent: control
                x: control.mirrored ? 0 : control.width - width
                y: control.topPadding
                active: true
                contentItem: Rectangle {
                    implicitWidth: 6
                    implicitHeight: 100
                    radius: width / 2
                    color: "#c2f4c6"
                }
            }
        }
    }
    

    When I hovered scroll bar, an error occurred

    qrc:/qt-project.org/imports/QtQuick/Controls/Windows/ScrollBar.qml:33:49: Unable to assign [undefined] to int
    

    And I cannot open qrc:/qt-project.org/imports/QtQuick/Controls/Windows/ScrollBar.qml, so I have no idea about the reason why I meet this problem.

    LahearleL Offline
    LahearleL Offline
    Lahearle
    wrote on last edited by
    #3

    @Kamichanw

    You have an integer number (like size) that is not defined properly.

    if it's not defined, define it

    if it is defined, make sure it's defined properly

    radius width is not defined, it's width(0) divided by 2
    for x and Y I would use anchors.right: parent.right
    control.width - width makes no sense math wise, x position being the width of the scrollview box makes no sense

    just rewrite it until you get it working to help yourself understand

    :)

    1 Reply Last reply
    0
    • sierdzioS sierdzio

      @Kamichanw Which line is 33?

      K Offline
      K Offline
      Kamichanw
      wrote on last edited by
      #4

      @sierdzio I don't know. As you can see, the error message shows that error occurred in qrc:/qt-project.org/imports/QtQuick/Controls/Windows/ScrollBar.qml which is a qt internal file.

      sierdzioS 1 Reply Last reply
      0
      • sierdzioS sierdzio

        @Kamichanw Which line is 33?

        K Offline
        K Offline
        Kamichanw
        wrote on last edited by Kamichanw
        #5

        @Lahearle I've tried to define width, but it still didn't work. In fact, even I just set an empty rectangle as contentItem of ScrollBar, like this:

        contentItem: Rectangle {}
        

        The error occurred still occurred when I hovered the ScrollBar.

        L 1 Reply Last reply
        0
        • K Kamichanw

          @Lahearle I've tried to define width, but it still didn't work. In fact, even I just set an empty rectangle as contentItem of ScrollBar, like this:

          contentItem: Rectangle {}
          

          The error occurred still occurred when I hovered the ScrollBar.

          L Offline
          L Offline
          LS-KS
          wrote on last edited by
          #6

          @Kamichanw ScrollView is a Layout. So please try

          Layout.preferredWidth
          

          instead of width

          K 1 Reply Last reply
          0
          • L LS-KS

            @Kamichanw ScrollView is a Layout. So please try

            Layout.preferredWidth
            

            instead of width

            K Offline
            K Offline
            Kamichanw
            wrote on last edited by Kamichanw
            #7

            @LS-KS I cannot understand... The width we discussed earlier is the width of ScrollBar. And ScrollBar is assigned to ScrollBar.vertical which is a attached property of ScrollView. It shouldn't be a child item of ScrollView.

            What's more, when the Rectangle is assigned to contentItem, it doesn't have attached property named Layout.

            JonBJ L 2 Replies Last reply
            0
            • K Kamichanw

              @sierdzio I don't know. As you can see, the error message shows that error occurred in qrc:/qt-project.org/imports/QtQuick/Controls/Windows/ScrollBar.qml which is a qt internal file.

              sierdzioS Offline
              sierdzioS Offline
              sierdzio
              Moderators
              wrote on last edited by
              #8

              @Kamichanw said in Unable to assign [undefined] to int during customizing ScrollBar:

              @sierdzio I don't know. As you can see, the error message shows that error occurred in qrc:/qt-project.org/imports/QtQuick/Controls/Windows/ScrollBar.qml which is a qt internal file.

              Well, but looking at it will tell you which property assignment has failed. Then you will know which object in your code is undefined.

              (Z(:^

              K 1 Reply Last reply
              0
              • K Kamichanw

                @LS-KS I cannot understand... The width we discussed earlier is the width of ScrollBar. And ScrollBar is assigned to ScrollBar.vertical which is a attached property of ScrollView. It shouldn't be a child item of ScrollView.

                What's more, when the Rectangle is assigned to contentItem, it doesn't have attached property named Layout.

                JonBJ Offline
                JonBJ Offline
                JonB
                wrote on last edited by
                #9

                @Kamichanw
                If you cannot track down which item it is in your code, maybe try commenting each one out till you find out?

                K 1 Reply Last reply
                0
                • K Kamichanw

                  @LS-KS I cannot understand... The width we discussed earlier is the width of ScrollBar. And ScrollBar is assigned to ScrollBar.vertical which is a attached property of ScrollView. It shouldn't be a child item of ScrollView.

                  What's more, when the Rectangle is assigned to contentItem, it doesn't have attached property named Layout.

                  L Offline
                  L Offline
                  LS-KS
                  wrote on last edited by
                  #10

                  @Kamichanw
                  I never used that ScrollBar Item so I may be wrong.
                  In general when you place something into a Layout object (like ScrollView) you can't use width and height but must use Layout -properties like preferredWidth etc.
                  You used width in your calculations.

                  K 1 Reply Last reply
                  0
                  • JonBJ JonB

                    @Kamichanw
                    If you cannot track down which item it is in your code, maybe try commenting each one out till you find out?

                    K Offline
                    K Offline
                    Kamichanw
                    wrote on last edited by
                    #11

                    @JonB Of course, I have tried this strategy. However, even I commented all code in Rectangle, the problem persists.

                    1 Reply Last reply
                    0
                    • L LS-KS

                      @Kamichanw
                      I never used that ScrollBar Item so I may be wrong.
                      In general when you place something into a Layout object (like ScrollView) you can't use width and height but must use Layout -properties like preferredWidth etc.
                      You used width in your calculations.

                      K Offline
                      K Offline
                      Kamichanw
                      wrote on last edited by
                      #12

                      @LS-KS As you can see in qt doc, it uses width as well.

                      1 Reply Last reply
                      0
                      • sierdzioS sierdzio

                        @Kamichanw said in Unable to assign [undefined] to int during customizing ScrollBar:

                        @sierdzio I don't know. As you can see, the error message shows that error occurred in qrc:/qt-project.org/imports/QtQuick/Controls/Windows/ScrollBar.qml which is a qt internal file.

                        Well, but looking at it will tell you which property assignment has failed. Then you will know which object in your code is undefined.

                        K Offline
                        K Offline
                        Kamichanw
                        wrote on last edited by
                        #13

                        @sierdzio Yes, I hope to open that file as well, but when I click the hyperlink in QML debugger console, it shows that
                        b9f4aaa2-8905-4d8e-9c2a-70abbe86b193-image.png
                        I also tried to search ScrollBar.qml in qt source directory, but there are too many file named ScrollBar.qml so that I don't know where to start.

                        JonBJ 1 Reply Last reply
                        0
                        • K Kamichanw

                          @sierdzio Yes, I hope to open that file as well, but when I click the hyperlink in QML debugger console, it shows that
                          b9f4aaa2-8905-4d8e-9c2a-70abbe86b193-image.png
                          I also tried to search ScrollBar.qml in qt source directory, but there are too many file named ScrollBar.qml so that I don't know where to start.

                          JonBJ Offline
                          JonBJ Offline
                          JonB
                          wrote on last edited by
                          #14

                          @Kamichanw
                          Is there a directory something like QtQuick\Controls\Windows in the source tree? If so, how many ScrollBar.qml files are there in that directory?

                          1 Reply Last reply
                          0
                          • K Offline
                            K Offline
                            Kamichanw
                            wrote on last edited by
                            #15

                            Hey guys, I opened C:\Qt\6.4.2\Src\qtdeclarative\src\quickcontrols2\windows\ScrollBar.qml . I think it might be the correct ScrollBar.qml. The line 33 uses contentITem.transitionDuration. But I cannot set in my file directly.

                            NativeStyle.ScrollBar {
                                    // Fade a hovered-looking version of the handle
                                    // on top of the default handle when hovering it
                                    x: contentItem.x
                                    y: contentItem.y
                                    z: 1
                                    width: contentItem.width
                                    height: contentItem.height
                                    control: controlRoot
                                    subControl: NativeStyle.ScrollBar.Handle
                                    overrideState: NativeStyle.StyleItem.AlwaysHovered
                                    opacity: controlRoot.hovered || control.pressed ? 1 : 0
                                    visible: contentItem instanceof NativeStyle.StyleItem--
                                    Behavior on opacity { NumberAnimation { duration: contentItem.transitionDuration } } // line 33
                                }
                            
                            GrecKoG 1 Reply Last reply
                            0
                            • K Kamichanw

                              Hey guys, I opened C:\Qt\6.4.2\Src\qtdeclarative\src\quickcontrols2\windows\ScrollBar.qml . I think it might be the correct ScrollBar.qml. The line 33 uses contentITem.transitionDuration. But I cannot set in my file directly.

                              NativeStyle.ScrollBar {
                                      // Fade a hovered-looking version of the handle
                                      // on top of the default handle when hovering it
                                      x: contentItem.x
                                      y: contentItem.y
                                      z: 1
                                      width: contentItem.width
                                      height: contentItem.height
                                      control: controlRoot
                                      subControl: NativeStyle.ScrollBar.Handle
                                      overrideState: NativeStyle.StyleItem.AlwaysHovered
                                      opacity: controlRoot.hovered || control.pressed ? 1 : 0
                                      visible: contentItem instanceof NativeStyle.StyleItem--
                                      Behavior on opacity { NumberAnimation { duration: contentItem.transitionDuration } } // line 33
                                  }
                              
                              GrecKoG Offline
                              GrecKoG Offline
                              GrecKo
                              Qt Champions 2018
                              wrote on last edited by
                              #16

                              @Kamichanw You should not customize native styles.
                              https://www.youtube.com/watch?v=mImptIBmWW0&t=1179s

                              K 1 Reply Last reply
                              0
                              • GrecKoG GrecKo

                                @Kamichanw You should not customize native styles.
                                https://www.youtube.com/watch?v=mImptIBmWW0&t=1179s

                                K Offline
                                K Offline
                                Kamichanw
                                wrote on last edited by
                                #17

                                @GrecKo But how can I customize ScrollBar of ScrollView? Should I have to implement my own ScrollView?

                                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