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.9k 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.
  • behruz montazeriB Offline
    behruz montazeriB Offline
    behruz montazeri
    wrote on last edited by
    #9

    How to make a variable static inside java script each time i click lastColor get the same value.
    How can i prevent that ?

    function changeColor(rectId, param1) {
    
        var   lastColor ="#ffffff"
        console.log("last Color: "+lastColor)
        console.log("ColorM: "+param1)
    
        if(lastColor === param1 ){
            console.log("Second");
             rectId.color = param1
            lastColor = "#ffffff";
            return
        }
        if(lastColor == "#ffffff"){
            rectId.color = param1
            lastColor = param1;
    
            console.log("First");
    
        }
    
        else console.log(lastColor)
    
    }
    
    DiracsbracketD 1 Reply Last reply
    0
    • behruz montazeriB behruz montazeri

      How to make a variable static inside java script each time i click lastColor get the same value.
      How can i prevent that ?

      function changeColor(rectId, param1) {
      
          var   lastColor ="#ffffff"
          console.log("last Color: "+lastColor)
          console.log("ColorM: "+param1)
      
          if(lastColor === param1 ){
              console.log("Second");
               rectId.color = param1
              lastColor = "#ffffff";
              return
          }
          if(lastColor == "#ffffff"){
              rectId.color = param1
              lastColor = param1;
      
              console.log("First");
      
          }
      
          else console.log(lastColor)
      
      }
      
      DiracsbracketD Offline
      DiracsbracketD Offline
      Diracsbracket
      wrote on last edited by
      #10

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

      behruz montazeriB 1 Reply Last reply
      2
      • DiracsbracketD Diracsbracket

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

        behruz montazeriB Offline
        behruz montazeriB Offline
        behruz montazeri
        wrote on 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++
        }
        
        DiracsbracketD 1 Reply Last reply
        0
        • behruz montazeriB behruz montazeri

          @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++
          }
          
          DiracsbracketD Offline
          DiracsbracketD Offline
          Diracsbracket
          wrote on last edited by
          #12

          @behruz-montazeri
          Then use a global JS variable.

          behruz montazeriB 1 Reply Last reply
          1
          • DiracsbracketD Diracsbracket

            @behruz-montazeri
            Then use a global JS variable.

            behruz montazeriB Offline
            behruz montazeriB Offline
            behruz montazeri
            wrote on last edited by
            #13

            @Diracsbracket
            Yes that's the case.

             property int counter: 0
            
            DiracsbracketD 1 Reply Last reply
            0
            • behruz montazeriB behruz montazeri

              @Diracsbracket
              Yes that's the case.

               property int counter: 0
              
              DiracsbracketD Offline
              DiracsbracketD Offline
              Diracsbracket
              wrote on last edited by
              #14

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

              behruz montazeriB 1 Reply Last reply
              0
              • DiracsbracketD Diracsbracket

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

                behruz montazeriB Offline
                behruz montazeriB Offline
                behruz montazeri
                wrote on last edited by
                #15

                @Diracsbracket
                Where can i declare a javascript global variable ?

                DiracsbracketD 1 Reply Last reply
                0
                • behruz montazeriB behruz montazeri

                  @Diracsbracket
                  Where can i declare a javascript global variable ?

                  DiracsbracketD Offline
                  DiracsbracketD Offline
                  Diracsbracket
                  wrote on last edited by Diracsbracket
                  #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.

                  behruz montazeriB 1 Reply Last reply
                  0
                  • DiracsbracketD Diracsbracket

                    @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.

                    behruz montazeriB Offline
                    behruz montazeriB Offline
                    behruz montazeri
                    wrote on last edited by behruz montazeri
                    #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.

                    DiracsbracketD 1 Reply Last reply
                    0
                    • behruz montazeriB behruz montazeri

                      @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.

                      DiracsbracketD Offline
                      DiracsbracketD Offline
                      Diracsbracket
                      wrote on last edited by Diracsbracket
                      #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

                      behruz montazeriB 1 Reply Last reply
                      0
                      • DiracsbracketD Diracsbracket

                        @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

                        behruz montazeriB Offline
                        behruz montazeriB Offline
                        behruz montazeri
                        wrote on last edited by behruz montazeri
                        #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'
                            }
                        }
                        
                        DiracsbracketD 1 Reply Last reply
                        0
                        • behruz montazeriB behruz montazeri

                          @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'
                              }
                          }
                          
                          DiracsbracketD Offline
                          DiracsbracketD Offline
                          Diracsbracket
                          wrote on last edited by
                          #20

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

                          behruz montazeriB 1 Reply Last reply
                          0
                          • DiracsbracketD Diracsbracket

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

                            behruz montazeriB Offline
                            behruz montazeriB Offline
                            behruz montazeri
                            wrote on last edited by
                            #21

                            @Diracsbracket
                            Is it possible to ask in new topic ?

                            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