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. Change component's child propery from javascript file
Forum Updated to NodeBB v4.3 + New Features

Change component's child propery from javascript file

Scheduled Pinned Locked Moved Solved QML and Qt Quick
21 Posts 3 Posters 3.7k 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.
  • D Diracsbracket
    1 Sept 2018, 08:35

    @behruz-montazeri
    Do a Google search for that: JavaScript + static local variable.
    e.g. https://stackoverflow.com/questions/1535631/static-variables-in-javascript

    B Offline
    B Offline
    behruz montazeri
    wrote on 2 Sept 2018, 06:59 last edited by
    #11

    @Diracsbracket
    I did one. I changed my function. But here's another problem it work for only one qml file and if we call it from another qml file counter is Zero.

    function changeColor(rectId, param1) {
        if( typeof changeColor.counter == 'undefined' ) {
            changeColor.counter  = 0;
        }
        changeColor.counter++
    }
    
    D 1 Reply Last reply 2 Sept 2018, 07:36
    0
    • B behruz montazeri
      2 Sept 2018, 06:59

      @Diracsbracket
      I did one. I changed my function. But here's another problem it work for only one qml file and if we call it from another qml file counter is Zero.

      function changeColor(rectId, param1) {
          if( typeof changeColor.counter == 'undefined' ) {
              changeColor.counter  = 0;
          }
          changeColor.counter++
      }
      
      D Offline
      D Offline
      Diracsbracket
      wrote on 2 Sept 2018, 07:36 last edited by
      #12

      @behruz-montazeri
      Then use a global JS variable.

      B 1 Reply Last reply 2 Sept 2018, 09:12
      1
      • D Diracsbracket
        2 Sept 2018, 07:36

        @behruz-montazeri
        Then use a global JS variable.

        B Offline
        B Offline
        behruz montazeri
        wrote on 2 Sept 2018, 09:12 last edited by
        #13

        @Diracsbracket
        Yes that's the case.

         property int counter: 0
        
        D 1 Reply Last reply 2 Sept 2018, 09:55
        0
        • B behruz montazeri
          2 Sept 2018, 09:12

          @Diracsbracket
          Yes that's the case.

           property int counter: 0
          
          D Offline
          D Offline
          Diracsbracket
          wrote on 2 Sept 2018, 09:55 last edited by
          #14

          @behruz-montazeri
          that's not a JS variable. That's a QML object property.

          B 1 Reply Last reply 2 Sept 2018, 10:01
          0
          • D Diracsbracket
            2 Sept 2018, 09:55

            @behruz-montazeri
            that's not a JS variable. That's a QML object property.

            B Offline
            B Offline
            behruz montazeri
            wrote on 2 Sept 2018, 10:01 last edited by
            #15

            @Diracsbracket
            Where can i declare a javascript global variable ?

            D 1 Reply Last reply 2 Sept 2018, 10:03
            0
            • B behruz montazeri
              2 Sept 2018, 10:01

              @Diracsbracket
              Where can i declare a javascript global variable ?

              D Offline
              D Offline
              Diracsbracket
              wrote on 2 Sept 2018, 10:03 last edited by Diracsbracket 9 Feb 2018, 10:05
              #16

              @behruz-montazeri said in Change component's child propery from javascript file:

              @Diracsbracket
              Where can i declare a javascript global variable ?

              In a javascript file. Otherwise create a property at a top-level QML object, e.g. your main window, which exists for the duration of your app.

              B 1 Reply Last reply 2 Sept 2018, 10:12
              0
              • D Diracsbracket
                2 Sept 2018, 10:03

                @behruz-montazeri said in Change component's child propery from javascript file:

                @Diracsbracket
                Where can i declare a javascript global variable ?

                In a javascript file. Otherwise create a property at a top-level QML object, e.g. your main window, which exists for the duration of your app.

                B Offline
                B Offline
                behruz montazeri
                wrote on 2 Sept 2018, 10:12 last edited by behruz montazeri 9 Feb 2018, 10:13
                #17

                @Diracsbracket
                I guess creating property make seance in my situation. making a Javascript file variable doesn't keep track of increasing despite the several calls from different QML files.

                D 1 Reply Last reply 2 Sept 2018, 10:18
                0
                • B behruz montazeri
                  2 Sept 2018, 10:12

                  @Diracsbracket
                  I guess creating property make seance in my situation. making a Javascript file variable doesn't keep track of increasing despite the several calls from different QML files.

                  D Offline
                  D Offline
                  Diracsbracket
                  wrote on 2 Sept 2018, 10:18 last edited by Diracsbracket 9 Feb 2018, 10:19
                  #18

                  @behruz-montazeri said in Change component's child propery from javascript file:

                  I guess creating property make seance in my situation.

                  That's usually the best way indeed.

                  making a Javascript file variable doesn't keep track of increasing despite the several calls from different QML files.

                  You can do it, if you really need it:
                  http://doc.qt.io/qt-5/qtqml-javascript-resources.html#shared-javascript-resources-libraries

                  B 1 Reply Last reply 2 Sept 2018, 10:59
                  0
                  • D Diracsbracket
                    2 Sept 2018, 10:18

                    @behruz-montazeri said in Change component's child propery from javascript file:

                    I guess creating property make seance in my situation.

                    That's usually the best way indeed.

                    making a Javascript file variable doesn't keep track of increasing despite the several calls from different QML files.

                    You can do it, if you really need it:
                    http://doc.qt.io/qt-5/qtqml-javascript-resources.html#shared-javascript-resources-libraries

                    B Offline
                    B Offline
                    behruz montazeri
                    wrote on 2 Sept 2018, 10:59 last edited by behruz montazeri 9 Feb 2018, 11:00
                    #19

                    @Diracsbracket

                    I have a list view i want to change the color of all rectangle inside of component with Javascript.

                        ListView{
                            id:fruitList
                            anchors.fill: parent
                            model: mModel
                            delegate: mComponent
                            highlight: Rectangle{
                                width: parent.width
                                color: "red"
                            }
                            Component{
                                id:mComponent
                               Item {
                                    width:parent.width
                                    height: rectId.height
                                    Rectangle{
                                        id:rectId
                                        width: parent.width
                                        height: 80
                                        border.width: 6
                                        border.color: "black"
                    
                                        Image {
                                            anchors.centerIn: parent
                                            width:70
                                            height: width
                                            id: mPic
                                            source: msource
                                        }
                                        ItemDelegate{
                                            anchors.fill: parent
                                            onClicked: {
                                                MyColor.changeColor(rectId,colorM)
                                                mText =  MyColor.textReturn("page1")
                                           } 
                    
                                        }
                                    }
                    
                                }
                            }
                    

                    in Javascript :

                    function resetList()
                    {
                        for (var entry = 0; entry < fruitList.count; ++entry) {
                            
                             // rectId.color = "white'
                        }
                    }
                    
                    D 1 Reply Last reply 2 Sept 2018, 13:18
                    0
                    • B behruz montazeri
                      2 Sept 2018, 10:59

                      @Diracsbracket

                      I have a list view i want to change the color of all rectangle inside of component with Javascript.

                          ListView{
                              id:fruitList
                              anchors.fill: parent
                              model: mModel
                              delegate: mComponent
                              highlight: Rectangle{
                                  width: parent.width
                                  color: "red"
                              }
                              Component{
                                  id:mComponent
                                 Item {
                                      width:parent.width
                                      height: rectId.height
                                      Rectangle{
                                          id:rectId
                                          width: parent.width
                                          height: 80
                                          border.width: 6
                                          border.color: "black"
                      
                                          Image {
                                              anchors.centerIn: parent
                                              width:70
                                              height: width
                                              id: mPic
                                              source: msource
                                          }
                                          ItemDelegate{
                                              anchors.fill: parent
                                              onClicked: {
                                                  MyColor.changeColor(rectId,colorM)
                                                  mText =  MyColor.textReturn("page1")
                                             } 
                      
                                          }
                                      }
                      
                                  }
                              }
                      

                      in Javascript :

                      function resetList()
                      {
                          for (var entry = 0; entry < fruitList.count; ++entry) {
                              
                               // rectId.color = "white'
                          }
                      }
                      
                      D Offline
                      D Offline
                      Diracsbracket
                      wrote on 2 Sept 2018, 13:18 last edited by
                      #20

                      @behruz-montazeri
                      I think this thread is closed. Thanks.

                      B 1 Reply Last reply 2 Sept 2018, 13:20
                      0
                      • D Diracsbracket
                        2 Sept 2018, 13:18

                        @behruz-montazeri
                        I think this thread is closed. Thanks.

                        B Offline
                        B Offline
                        behruz montazeri
                        wrote on 2 Sept 2018, 13:20 last edited by
                        #21

                        @Diracsbracket
                        Is it possible to ask in new topic ?

                        1 Reply Last reply
                        0

                        20/21

                        2 Sept 2018, 13:18

                        • Login

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