Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. why the varrible that i define in file.js it works in MouseArea but it don't works in Text or Image Type?
Qt 6.11 is out! See what's new in the release blog

why the varrible that i define in file.js it works in MouseArea but it don't works in Text or Image Type?

Scheduled Pinned Locked Moved Solved Mobile and Embedded
15 Posts 2 Posters 3.3k Views 2 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.
  • C crazymax

    text;coreapp.foo; => text:coreapp.foo;
    you need to use colon instead of semicolon if it's not a missprint

    stackprogramerS Offline
    stackprogramerS Offline
    stackprogramer
    wrote on last edited by
    #3

    @crazymax said:

    text;coreapp.foo; => text:coreapp.foo;
    you need to use colon instead of semicolon if it's not a missprint

    this is in my source is : and my source is right;i have typo.but in type image varrible can not detect.thanks for reply.

    C 1 Reply Last reply
    0
    • stackprogramerS stackprogramer

      @crazymax said:

      text;coreapp.foo; => text:coreapp.foo;
      you need to use colon instead of semicolon if it's not a missprint

      this is in my source is : and my source is right;i have typo.but in type image varrible can not detect.thanks for reply.

      C Offline
      C Offline
      crazymax
      wrote on last edited by
      #4

      @stackprogramer
      this works fine for me. Qt 5.5.1
      file.js

      var foo = "some text"
      

      main.qml

      import QtQuick 2.3
      import QtQuick.Controls 1.2
      import QtQuick.Layouts 1.1
      
      import "file.js" as Coreapp
      
      
      ApplicationWindow {
          visible: true
          width: 640
          height: 480
          title: qsTr("Hello World")
          id: root
          Text{id:newImage;
          text:Coreapp.foo;
      
          }
      
      }
      
      
      
      stackprogramerS 1 Reply Last reply
      1
      • C crazymax

        @stackprogramer
        this works fine for me. Qt 5.5.1
        file.js

        var foo = "some text"
        

        main.qml

        import QtQuick 2.3
        import QtQuick.Controls 1.2
        import QtQuick.Layouts 1.1
        
        import "file.js" as Coreapp
        
        
        ApplicationWindow {
            visible: true
            width: 640
            height: 480
            title: qsTr("Hello World")
            id: root
            Text{id:newImage;
            text:Coreapp.foo;
        
            }
        
        }
        
        
        
        stackprogramerS Offline
        stackprogramerS Offline
        stackprogramer
        wrote on last edited by stackprogramer
        #5

        @crazymax said:

        @stackprogramer
        this works fine for me. Qt 5.5.1
        file.js

        var foo = "some text"
        

        main.qml

        import QtQuick 2.3
        import QtQuick.Controls 1.2
        import QtQuick.Layouts 1.1
        
        import "file.js" as Coreapp
        
        
        ApplicationWindow {
            visible: true
            width: 640
            height: 480
            title: qsTr("Hello World")
            id: root
            Text{id:newImage;
            text:Coreapp.foo;
        
            }
        
        }
        
        
        

        you are right but in this my source that here it dont work,i want to it work it type image.

         Image {id:imagequestion
                        property string numberFolder:Math.ceil((Math.random()*4))
                         // property string addressImage:4;
                          ParamGenSpiral.flagStart: 1;
                         source:"Image-Core-Render/SVG-Fruit"+numberFolder+"th/Fruit"+numberFolder+"-"+Math.ceil(Math.random()*9)+".svg";
                        width:100
                        height:100
        
                        anchors.centerIn: parent
        
                        RotationAnimation on rotation {
                            duration:600
                            loops: Animation.Infinite
                            from: 0
                            to:360
                          }
        
                    }
        

        ParamGenSpiral.Flag is a varible that i defined in js,but it don't work in image type but it work in mousearea

        C 1 Reply Last reply
        0
        • stackprogramerS stackprogramer

          @crazymax said:

          @stackprogramer
          this works fine for me. Qt 5.5.1
          file.js

          var foo = "some text"
          

          main.qml

          import QtQuick 2.3
          import QtQuick.Controls 1.2
          import QtQuick.Layouts 1.1
          
          import "file.js" as Coreapp
          
          
          ApplicationWindow {
              visible: true
              width: 640
              height: 480
              title: qsTr("Hello World")
              id: root
              Text{id:newImage;
              text:Coreapp.foo;
          
              }
          
          }
          
          
          

          you are right but in this my source that here it dont work,i want to it work it type image.

           Image {id:imagequestion
                          property string numberFolder:Math.ceil((Math.random()*4))
                           // property string addressImage:4;
                            ParamGenSpiral.flagStart: 1;
                           source:"Image-Core-Render/SVG-Fruit"+numberFolder+"th/Fruit"+numberFolder+"-"+Math.ceil(Math.random()*9)+".svg";
                          width:100
                          height:100
          
                          anchors.centerIn: parent
          
                          RotationAnimation on rotation {
                              duration:600
                              loops: Animation.Infinite
                              from: 0
                              to:360
                            }
          
                      }
          

          ParamGenSpiral.Flag is a varible that i defined in js,but it don't work in image type but it work in mousearea

          C Offline
          C Offline
          crazymax
          wrote on last edited by
          #6

          @stackprogramer said:

          ParamGenSpiral.flagStart:

          as I see you try to set flagStart property of ParamGenSpiral alias in Image , but Image don't have such member.
          in mouseArea you use set text in mouseArea method, so it are 2 different cases.

          onclicked:{text:coreapp.foo;}
          }
          

          What do you want to do with ParamGenSpiral.flagStart in Image?

          stackprogramerS 1 Reply Last reply
          0
          • C crazymax

            @stackprogramer said:

            ParamGenSpiral.flagStart:

            as I see you try to set flagStart property of ParamGenSpiral alias in Image , but Image don't have such member.
            in mouseArea you use set text in mouseArea method, so it are 2 different cases.

            onclicked:{text:coreapp.foo;}
            }
            

            What do you want to do with ParamGenSpiral.flagStart in Image?

            stackprogramerS Offline
            stackprogramerS Offline
            stackprogramer
            wrote on last edited by
            #7

            @crazymax said:

            @stackprogramer said:

            ParamGenSpiral.flagStart:

            as I see you try to set flagStart property of ParamGenSpiral alias in Image , but Image don't have such member.
            in mouseArea you use set text in mouseArea method, so it are 2 different cases.

            onclicked:{text:coreapp.foo;}
            }
            

            What do you want to do with ParamGenSpiral.flagStart in Image?

            i want to ParamGenSpiral.flagStart use that save qurl a image,i in the past i save Qurl location image in a js varrible ParamGenSpiral.flagStart now i use it to source my image
            Image{

            addresssimage:ParamGenSpiral.flagStart;
            source:addresssimage;
                  }  
            

            but it can not detected in type image!!

            C 1 Reply Last reply
            0
            • stackprogramerS stackprogramer

              @crazymax said:

              @stackprogramer said:

              ParamGenSpiral.flagStart:

              as I see you try to set flagStart property of ParamGenSpiral alias in Image , but Image don't have such member.
              in mouseArea you use set text in mouseArea method, so it are 2 different cases.

              onclicked:{text:coreapp.foo;}
              }
              

              What do you want to do with ParamGenSpiral.flagStart in Image?

              i want to ParamGenSpiral.flagStart use that save qurl a image,i in the past i save Qurl location image in a js varrible ParamGenSpiral.flagStart now i use it to source my image
              Image{

              addresssimage:ParamGenSpiral.flagStart;
              source:addresssimage;
                    }  
              

              but it can not detected in type image!!

              C Offline
              C Offline
              crazymax
              wrote on last edited by crazymax
              #8

              @stackprogramer said:

              addresssimage:ParamGenSpiral.flagStart;

              you can't bind property to pure js value. It doesn't emit signal when it's updated - so your addresssimage can't know what it must be updated. It doesn't load new value of ParamGenSpiral.flagStart
              instead of this you can define your own property to bind or use this aproach http://stackoverflow.com/questions/27102055/bind-to-imported-javascript-property

              1 Reply Last reply
              0
              • stackprogramerS Offline
                stackprogramerS Offline
                stackprogramer
                wrote on last edited by stackprogramer
                #9

                i need some time ,i soon examine it and i reply the result thanks

                1 Reply Last reply
                0
                • stackprogramerS Offline
                  stackprogramerS Offline
                  stackprogramer
                  wrote on last edited by
                  #10

                  i use Qt.binding that set property.

                  Image {id:imagequestion
                                  
                                   property string addressImage:Qt.binding(function () { return ParamGenSpiral.addressImageOne })
                  
                  
                                  source:imagequestion.addressImage;
                                  width:100
                                  height:100
                  
                                  anchors.centerIn: parent
                  
                                  RotationAnimation on rotation {
                                      duration:600
                                      loops: Animation.Infinite
                                      from: 0
                                      to:360
                                    }
                  
                              }
                  

                  when i use the source console print the value addressImageOne:

                   console.debug(ParamGenSpiral.addressImageOne);
                  

                  but it return** undefined.**

                  but my problem solve didn't solve.

                  i too use method below but it result errors same before;

                                  PropertyChanges { target: imagequestion; addressImage:Window.addressImageOne}
                  
                  
                  C 1 Reply Last reply
                  0
                  • stackprogramerS stackprogramer

                    i use Qt.binding that set property.

                    Image {id:imagequestion
                                    
                                     property string addressImage:Qt.binding(function () { return ParamGenSpiral.addressImageOne })
                    
                    
                                    source:imagequestion.addressImage;
                                    width:100
                                    height:100
                    
                                    anchors.centerIn: parent
                    
                                    RotationAnimation on rotation {
                                        duration:600
                                        loops: Animation.Infinite
                                        from: 0
                                        to:360
                                      }
                    
                                }
                    

                    when i use the source console print the value addressImageOne:

                     console.debug(ParamGenSpiral.addressImageOne);
                    

                    but it return** undefined.**

                    but my problem solve didn't solve.

                    i too use method below but it result errors same before;

                                    PropertyChanges { target: imagequestion; addressImage:Window.addressImageOne}
                    
                    
                    C Offline
                    C Offline
                    crazymax
                    wrote on last edited by
                    #11

                    @stackprogramer
                    What is ParamGenSpiral in your code?
                    Is it JS file which contain global variable addressImageOne?

                    stackprogramerS 1 Reply Last reply
                    0
                    • C crazymax

                      @stackprogramer
                      What is ParamGenSpiral in your code?
                      Is it JS file which contain global variable addressImageOne?

                      stackprogramerS Offline
                      stackprogramerS Offline
                      stackprogramer
                      wrote on last edited by
                      #12

                      @crazymax said:

                      What is ParamGenSpiral in your code?
                      Is it JS file which contain global variable addressImageOne?

                      ParamGenSpiral is

                      import "file.js" as ParamGenSpiral
                      

                      in file js we defined below:

                      .pragma library
                      var score_user=15;
                      var tit=88;
                      //we define selected image in this property
                      var selectedImage;
                      var flagStart=0;
                      //we define the four image path here
                      var  addressImageOne;
                      var addressImageTwo;
                      var addressImageThree;
                      var  addressImageFour;
                      
                      
                      
                      function score() {
                         score_user= score_user+10;
                      
                          return score_user
                      
                      }
                      
                      
                      1 Reply Last reply
                      0
                      • stackprogramerS Offline
                        stackprogramerS Offline
                        stackprogramer
                        wrote on last edited by stackprogramer
                        #13

                        for more info we want to when i use tag type image we can set a value in varrible js and i can read value varrible in js.

                        Image{id:imageNum1
                        property string addrresimage:"qrc:///image.png"
                        ParamGenSpiral.addressImageOne:addrresimage;
                        source:addrresimage;
                        
                        }
                        
                        

                        my image show in my app,but my js varrible return undefined!!!!when i test ```

                        console.debug(ParamGenSpiral.addressImageOne);
                        C 1 Reply Last reply
                        0
                        • stackprogramerS stackprogramer

                          for more info we want to when i use tag type image we can set a value in varrible js and i can read value varrible in js.

                          Image{id:imageNum1
                          property string addrresimage:"qrc:///image.png"
                          ParamGenSpiral.addressImageOne:addrresimage;
                          source:addrresimage;
                          
                          }
                          
                          

                          my image show in my app,but my js varrible return undefined!!!!when i test ```

                          console.debug(ParamGenSpiral.addressImageOne);
                          C Offline
                          C Offline
                          crazymax
                          wrote on last edited by crazymax
                          #14

                          @stackprogramer
                          ParamGenSpiral is not a property of Image, so you can't
                          ParamGenSpiral.addressImageOne: addrresimage;

                          With this line ^^ I get qml error because it's not valid.

                          QQmlApplicationEngine failed to load component
                          qrc:/main.qml:21 Expected type name
                          

                          if you want to store some property of Image to js variable you can use smth like that

                          Image {
                                  id:imagequestion
                                  property string addrresimage: "qrc:///image.png"
                                  // on property changed func updates ParamGenSpiral.addressImageOne variable to new value
                                  onAddrresimageChanged: {
                                      ParamGenSpiral.addressImageOne = addrresimage;
                                      console.log("changed")
                                  }
                                  source:addrresimage;
                          
                                  width:100
                                  height:100
                          
                                  anchors.centerIn: parent
                          
                                  RotationAnimation on rotation {
                                      duration:600
                                      loops: Animation.Infinite
                                      from: 0
                                      to:360
                                    }
                                  Component.onCompleted:  {
                                      ParamGenSpiral.addressImageOne = addrresimage;
                                      console.log(addrresimage)
                                  }
                              }
                          
                              Timer{
                                  //prints out ParamGenSpiral.addressImageOne every 2 seconds
                                  interval: 2000
                                  repeat: true
                                  running: true
                                  onTriggered: {
                                      console.log(ParamGenSpiral.addressImageOne)
                                  }
                              }
                          
                          1 Reply Last reply
                          1
                          • stackprogramerS Offline
                            stackprogramerS Offline
                            stackprogramer
                            wrote on last edited by stackprogramer
                            #15

                            My problem is solved,this method solves my problem ,thanks very much for reply.

                             Component.onCompleted:  {
                                       
                                    }
                            
                            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