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?

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.2k 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.
  • stackprogramerS Offline
    stackprogramerS Offline
    stackprogramer
    wrote on last edited by
    #1

    my problem is when i define foo varaible in file.js when i use it
    in tag text it can't work,it cannot read foo.

    import file.js as coreapp
    Text{id:newImage;
    text;coreapp.foo;
    
    }
    

    but it works in type MouseArea;

    import file.js as coreapp
    Text{id:newImage;
    text:"45";
    MouseArea{
    onclicked:{text:coreapp.foo;}
    }
    }
    

    i want to my js varrilbe in out ofMouseArea.what should i do?
    thanks for reply.

    1 Reply Last reply
    0
    • C Offline
      C Offline
      crazymax
      wrote on last edited by crazymax
      #2

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

      stackprogramerS 1 Reply Last reply
      0
      • 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