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. RE: QML id usage

RE: QML id usage

Scheduled Pinned Locked Moved Solved QML and Qt Quick
20 Posts 5 Posters 3.6k 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.
  • Naveen_DN Offline
    Naveen_DN Offline
    Naveen_D
    wrote on last edited by A Former User
    #1

    Hi all,
    I want to know how to use the id of the particular image defined in one .qml file within other .qml file ?

    for ex,
    Image {
    id: myimage
    }

    i want to use this id in other .qml file. how to do this ?

    Naveen_D

    1 Reply Last reply
    0
    • E Offline
      E Offline
      Eeli K
      wrote on last edited by
      #2

      You can't, and it's like that on purpose. Id identifies the object in the context it's used. That's the purpose of id, it's not a normal property.

      Two files are two different contexts. If you have e.g. file MyImage.qml which has that Image {id:myimage} and another file X.qml, you have to create a MyImage object in X:

      MyImage {
      id: myimage
      }

      and then you can use that id which is given in X.qml. It can be the same or different than the id in MyImage.qml. You don't have to give an id, but then you can't refer to the object outside the object itself.

      Naveen_DN 1 Reply Last reply
      0
      • p3c0P Offline
        p3c0P Offline
        p3c0
        Moderators
        wrote on last edited by
        #3

        @Naveen_D How do you include this file in other QML ?

        157

        1 Reply Last reply
        1
        • E Eeli K

          You can't, and it's like that on purpose. Id identifies the object in the context it's used. That's the purpose of id, it's not a normal property.

          Two files are two different contexts. If you have e.g. file MyImage.qml which has that Image {id:myimage} and another file X.qml, you have to create a MyImage object in X:

          MyImage {
          id: myimage
          }

          and then you can use that id which is given in X.qml. It can be the same or different than the id in MyImage.qml. You don't have to give an id, but then you can't refer to the object outside the object itself.

          Naveen_DN Offline
          Naveen_DN Offline
          Naveen_D
          wrote on last edited by
          #4

          @Eeli-K sorry i didn't get you clearly....

          MyImage {
          id: myimage
          }

          I have created the same way as shown by you in my main.qml using that id can i use this ?
          what i want to do is...i have an image in x.qml and in some situation i want to change the image to other in y.qml

          Naveen_D

          1 Reply Last reply
          0
          • dheerendraD Offline
            dheerendraD Offline
            dheerendra
            Qt Champions 2022
            wrote on last edited by
            #5

            You can't do that. If you are using another X.qml in Y.qml you must be creating object of X. So for Y.qml X.qml is like another class. You need to create the object of X.qml component in Y.qml. This object should new ID & through this you should access the properties defined in X.qml.

            Dheerendra
            @Community Service
            Certified Qt Specialist
            http://www.pthinks.com

            1 Reply Last reply
            4
            • Naveen_DN Offline
              Naveen_DN Offline
              Naveen_D
              wrote on last edited by
              #6

              hi, even tough when i create an object...i am not able to access the image id of other .qml file.

              for ex,
              in y.qml i created
              X {
              id: xobj
              }

              then when i tried with xobj id i am not able to access. can anyone tell me what i am doing is right ?

              Naveen_D

              E 1 Reply Last reply
              0
              • Naveen_DN Naveen_D

                hi, even tough when i create an object...i am not able to access the image id of other .qml file.

                for ex,
                in y.qml i created
                X {
                id: xobj
                }

                then when i tried with xobj id i am not able to access. can anyone tell me what i am doing is right ?

                E Offline
                E Offline
                Eeli K
                wrote on last edited by
                #7

                @Naveen_D Can you give more code, two whole files, and point out what doesn't work there as you expected?

                Naveen_DN 1 Reply Last reply
                0
                • E Eeli K

                  @Naveen_D Can you give more code, two whole files, and point out what doesn't work there as you expected?

                  Naveen_DN Offline
                  Naveen_DN Offline
                  Naveen_D
                  wrote on last edited by
                  #8

                  @Eeli-K Ya sure..

                  this is my menuscreen.qml code where i have created an object of mediaplay
                  based on some condition i want to change the image of mediaplay in menuscreen

                  import QtQuick 2.0
                  import QtQuick.Layouts 1.2
                  import QtGraphicalEffects 1.0
                  import QtQuick.Window 2.2
                  import QtQuick 2.5
                  import QtQuick.Dialogs 1.2
                  
                  
                  Rectangle {
                      id: main_menurect
                      width: (Screen.width/2)+200
                      height: (Screen.height/2)
                      color: "#e9ebf8"
                      anchors.centerIn: parent
                  
                      property bool checkicon: false
                  
                      MediaPlay{
                          id:mediaPlayObject
                      }
                  
                      Image {
                          id: back_img
                          source: "qrc:/Settings/HomeScreen.png"
                          anchors.centerIn: parent
                      }
                  
                      ColumnLayout
                      {
                          id: main_column_layout
                          spacing: 50
                          anchors.centerIn: parent
                  
                          //First Row
                          RowLayout{
                              id: firstrow
                              spacing: 50
                              anchors.horizontalCenter: parent.horizontalCenter
                  
                  
                              //Music
                              Rectangle{
                  
                                  id:mediaRect
                                  width: main_menurect.width/5
                                  height: main_menurect.height/4
                                  color: "transparent"
                  
                                  Image {
                                      id: media_image
                                      source: "qrc:/MediaPlayer/MusicMain-icon.png"
                                      width: parent.width-4
                                      height: parent.height-4
                                      smooth: true
                                      fillMode: Image.PreserveAspectFit
                                      anchors.centerIn: parent
                                      antialiasing: true
                  
                                      Text {
                                          id: mediatext
                                          text: qsTr("Media")
                                          anchors.top: parent.bottom
                                          anchors.horizontalCenter: media_image.horizontalCenter
                                          color: "white"
                                          font.pixelSize: parent.height * (2 / 15)
                                      }
                                  }
                  
                                  MouseArea{
                                      id: media_mousearea
                                      anchors.fill: parent
                                      onClicked: {
                                          vedioScreen.visible = true
                                          main_menurect.visible = false
                                      }
                                  }
                              }
                              //Phone
                              Rectangle{
                                  id:phoneRect
                                  width: main_menurect.width/5
                                  height: main_menurect.height/4
                                  color: "transparent"
                  
                                  Image {
                                      id: phone_image                                       
                                      source: "qrc:/Phone/AppbarIcon2.png"
                                      anchors.centerIn: parent
                                      width: parent.width-15
                                      height: parent.height-15
                                      smooth: true
                                      fillMode: Image.PreserveAspectFit
                                      antialiasing: true
                  
                                      Text {
                                          id: phonetext
                                          anchors.top: parent.bottom
                                          anchors.horizontalCenter: phone_image.horizontalCenter
                                          text: qsTr("Phone Book")
                                          color: "white"
                                          font.pixelSize:  parent.height * (2 / 15)
                                      }
                  
                                      MouseArea{
                                          id: phone_mousearea
                                          anchors.fill: parent
                                          onClicked: {
                                              phoneScreen.visible = true
                                              main_menurect.visible = false
                                          }
                                      }
                                  }
                  
                  
                              }
                  
                  
                  
                              //Radio
                              Rectangle{
                                  id:fmRect
                                  width: main_menurect.width/5
                                  height: main_menurect.height/4
                                  color: "transparent"
                                  Image {
                                      id: radio_image
                                      source: "qrc:/MainPage/RadioImg.png"
                                      smooth: true
                                      width: parent.width-10
                                      height: parent.height-10
                                      fillMode: Image.PreserveAspectFit
                                      anchors.centerIn: parent
                                      antialiasing: true
                  
                                      Text {
                                          id: radiotext
                                          anchors.top: parent.bottom
                                          anchors.horizontalCenter: radio_image.horizontalCenter
                                          text: qsTr("Radio")
                                          color: "white"
                                          font.pixelSize: parent.height * (2 / 15)
                                      }
                                  }
                  
                                  MouseArea{
                                      id: fm_mousearea
                                      anchors.fill: parent
                                      onClicked: {
                                          //radioScreen.visible = true
                                          main_menurect.visible = false
                                          radioSubScreen.visible = true
                                      }
                                  }
                  
                              }
                          }
                  
                          //Second Row
                          RowLayout{
                              id: secondrow
                              spacing: 50
                              visible: true
                              anchors.horizontalCenter: parent.horizontalCenter
                  
                              //VC
                              Rectangle{
                                  id:homeRect
                                  width: main_menurect.width/5
                                  height: main_menurect.height/4
                                  color: "transparent"
                                  Image {
                                      id: home_image
                                      source:"qrc:/Settings/AppbarIcon.png"
                                      anchors.centerIn: parent
                                      width: parent.width-15
                                      height: parent.height-15
                                      fillMode: Image.PreserveAspectFit
                                      antialiasing: true
                  
                                      Text {
                                          id: hometext
                                          anchors.top: parent.bottom
                                          anchors.horizontalCenter: home_image.horizontalCenter
                                          text: qsTr("Voice Control")
                                          color: "white"
                                          font.pixelSize: parent.height * (2 / 15)
                  
                                      }
                                  }
                                  Connections {
                                      target: VoiceRecogObject
                                      onPlaymusicsignal: {
                                          console.log("Recorded Voice :" + recordedString)
                  
                                          var receivedString = recordedString.slice(1, -1)
                                          var GotoMusicString = new String("GOTO MUSIC PLAYER")
                                          var GotoHomeString = new String("GOTO HOME")
                                          var GotoSettingString = new String("GOTO SETTINGS")
                                          var GotoVideoString = new String("GOTO VIDEO PLAYER")
                                          var GotoRadioString = new String("GOTO RADIO")
                                          var GotoMenuString = new String("GOTO MENU")
                                          var GotoMediaString = new String("GOTO MEDIA")
                                          var GotoPhoneString = new String("GOTO PHONE")
                                          var PlaySongString = new String("PLAY SONG")
                                          var PlayString = new String("PLAY")
                                          var PauseString = new String("PAUSE")
                                          var StopString = new String("STOP")
                                          var NextSongString = new String("NEXT SONG")
                                          var PreviousSongString = new String("PREVIOUS SONG")
                                          var VolumeIncreaseString = new String("VOLUME INCREASE")
                                          var VolumeDecreaseString = new String("VOLUME DECREASE")
                                          var RepeatOnString = new String("REPEAT ON")
                                          var RepeatOffString = new String("REPEAT OFF")
                                          var ShuffleOnString = new String("SHUFFLE ON")
                                          var ShuffleOffString = new String("SHUFFLE ON")
                                          var MuteString = new String("MUTE")
                  
                                          console.log(receivedString)
                                          if(receivedString.localeCompare(GotoMusicString) === 0)
                                          {
                                              console.log("play music")
                                              musicScreen.visible= true
                                              if(musicScreen.visible === true)
                                              {
                                                  if(receivedString.localeCompare(GotoMusicString) === 0){}
                                              }
                                          }
                                          else if(receivedString.localeCompare(GotoSettingString) === 0)
                                          {
                                              console.log("Settings Screen")
                                              settingScreen.visible= true
                                          }
                                          else if(receivedString.localeCompare(GotoHomeString) === 0)
                                          {
                                              console.log("Menu Screen")
                                              menusrcn.visible= true
                                          }
                                          else if(receivedString.localeCompare(GotoRadioString) === 0)
                                          {
                                              console.log("Radio Screen")
                                              radioSubScreen.visible= true
                                          }
                                          else if(receivedString.localeCompare(GotoVideoString) === 0)
                                          {
                                              console.log("Radio Screen")
                                              radioSubScreen.visible= true
                                          }
                                          else if(receivedString.localeCompare(GotoMediaString) === 0)
                                          {
                                              console.log("Media Screen")
                                              vedioScreen.visible= true
                                          }
                                          else if(receivedString.localeCompare(GotoPhoneString) === 0)
                                          {
                                              console.log("Phone Screen")
                                              phoneScreen.visible= true
                                          }
                                          else if(receivedString.localeCompare(PlaySongString) === 0)
                                          {
                                              console.log("Song Play")
                                              musicScreen.visible= true
                                              checkicon= true
                                              mysong.openFile()
                                              mediaPlayObject.play_image="qrc:/MediaPlayer/pauseIcon.png"
                                              if(checkicon == true)
                                              {
                                                  if(play_image.source==="qrc:/MediaPlayer/pauseIcon.png")
                                                  {
                                                      mysong.pausemusic()
                                                      play_image.source="qrc:/MediaPlayer/PlayIcon.png"
                                                  }
                                                  else
                                                  {
                                                      mysong.pausemusic()
                                                      play_image.source="qrc:/MediaPlayer/pauseIcon.png"
                                                  }
                                              }
                                          }
                                          else
                                          {
                                              console.log("please try again")
                                          }
                                      }
                                  }
                                  MouseArea {
                                      anchors.fill: parent
                                      onClicked: {
                                          VoiceRecogObject.vStartProcess()
                                      }
                                  }
                              }
                  
                              // Settings
                              Rectangle{
                                  id:settingsRect
                                  width: main_menurect.width/5
                                  height: main_menurect.height/4
                                  color: "transparent"
                  
                                  Image {
                                      id: setting_image
                                      source: "qrc:/MainPage/AppbarIcon3.png"
                                      width: parent.width-15
                                      height: parent.height-15
                                      smooth: true
                                      fillMode: Image.PreserveAspectFit
                                      anchors.centerIn: parent
                                      antialiasing: true
                  
                                      Text {
                                          id: settingtext
                                          anchors.top: parent.bottom
                                          anchors.horizontalCenter: setting_image.horizontalCenter
                                          text: qsTr("Settings")
                                          color: "white"
                                          font.pixelSize: parent.height * (2 / 15)
                  
                                      }
                                  }
                                  MouseArea{
                                      id: settings_mousearea
                                      anchors.fill: parent
                                      onClicked: {
                                          settingScreen.visible = true
                                          main_menurect.visible = false
                                      }
                                  }
                              }
                  
                              Rectangle{
                                  id:tvRect
                                  width: main_menurect.width/5
                                  height: main_menurect.height/4
                                  color: "transparent"
                                  Image {
                                      id: tv_image
                                      source: "qrc:/MainPage/tv-icon.png"
                                      width: parent.width-6
                                      height: parent.height-6
                                      smooth: true
                                      fillMode: Image.PreserveAspectFit
                                      anchors.centerIn: parent
                                      antialiasing: true
                                  }
                  
                                  Text {
                                      id: tvtext
                                      anchors.top: parent.bottom
                                      anchors.horizontalCenter: tv_image.horizontalCenter
                                      text: qsTr("Televison")
                                      color: "white"
                                      font.pixelSize: parent.height * (2 / 15)
                  
                                  }
                  
                                  MouseArea{
                                      id: tv_mousearea
                                      anchors.fill: parent
                                      onClicked: {
                                          tvScreen.visible = true
                                          main_menurect.visible = false
                                      }
                                  }
                  
                  
                  
                              }
                  
                  
                          }
                      }
                  }
                  

                  the condition is within connections,
                  mediaPlayObject.play_image="qrc:/MediaPlayer/pauseIcon.png"

                  Naveen_D

                  E 1 Reply Last reply
                  0
                  • Naveen_DN Naveen_D

                    @Eeli-K Ya sure..

                    this is my menuscreen.qml code where i have created an object of mediaplay
                    based on some condition i want to change the image of mediaplay in menuscreen

                    import QtQuick 2.0
                    import QtQuick.Layouts 1.2
                    import QtGraphicalEffects 1.0
                    import QtQuick.Window 2.2
                    import QtQuick 2.5
                    import QtQuick.Dialogs 1.2
                    
                    
                    Rectangle {
                        id: main_menurect
                        width: (Screen.width/2)+200
                        height: (Screen.height/2)
                        color: "#e9ebf8"
                        anchors.centerIn: parent
                    
                        property bool checkicon: false
                    
                        MediaPlay{
                            id:mediaPlayObject
                        }
                    
                        Image {
                            id: back_img
                            source: "qrc:/Settings/HomeScreen.png"
                            anchors.centerIn: parent
                        }
                    
                        ColumnLayout
                        {
                            id: main_column_layout
                            spacing: 50
                            anchors.centerIn: parent
                    
                            //First Row
                            RowLayout{
                                id: firstrow
                                spacing: 50
                                anchors.horizontalCenter: parent.horizontalCenter
                    
                    
                                //Music
                                Rectangle{
                    
                                    id:mediaRect
                                    width: main_menurect.width/5
                                    height: main_menurect.height/4
                                    color: "transparent"
                    
                                    Image {
                                        id: media_image
                                        source: "qrc:/MediaPlayer/MusicMain-icon.png"
                                        width: parent.width-4
                                        height: parent.height-4
                                        smooth: true
                                        fillMode: Image.PreserveAspectFit
                                        anchors.centerIn: parent
                                        antialiasing: true
                    
                                        Text {
                                            id: mediatext
                                            text: qsTr("Media")
                                            anchors.top: parent.bottom
                                            anchors.horizontalCenter: media_image.horizontalCenter
                                            color: "white"
                                            font.pixelSize: parent.height * (2 / 15)
                                        }
                                    }
                    
                                    MouseArea{
                                        id: media_mousearea
                                        anchors.fill: parent
                                        onClicked: {
                                            vedioScreen.visible = true
                                            main_menurect.visible = false
                                        }
                                    }
                                }
                                //Phone
                                Rectangle{
                                    id:phoneRect
                                    width: main_menurect.width/5
                                    height: main_menurect.height/4
                                    color: "transparent"
                    
                                    Image {
                                        id: phone_image                                       
                                        source: "qrc:/Phone/AppbarIcon2.png"
                                        anchors.centerIn: parent
                                        width: parent.width-15
                                        height: parent.height-15
                                        smooth: true
                                        fillMode: Image.PreserveAspectFit
                                        antialiasing: true
                    
                                        Text {
                                            id: phonetext
                                            anchors.top: parent.bottom
                                            anchors.horizontalCenter: phone_image.horizontalCenter
                                            text: qsTr("Phone Book")
                                            color: "white"
                                            font.pixelSize:  parent.height * (2 / 15)
                                        }
                    
                                        MouseArea{
                                            id: phone_mousearea
                                            anchors.fill: parent
                                            onClicked: {
                                                phoneScreen.visible = true
                                                main_menurect.visible = false
                                            }
                                        }
                                    }
                    
                    
                                }
                    
                    
                    
                                //Radio
                                Rectangle{
                                    id:fmRect
                                    width: main_menurect.width/5
                                    height: main_menurect.height/4
                                    color: "transparent"
                                    Image {
                                        id: radio_image
                                        source: "qrc:/MainPage/RadioImg.png"
                                        smooth: true
                                        width: parent.width-10
                                        height: parent.height-10
                                        fillMode: Image.PreserveAspectFit
                                        anchors.centerIn: parent
                                        antialiasing: true
                    
                                        Text {
                                            id: radiotext
                                            anchors.top: parent.bottom
                                            anchors.horizontalCenter: radio_image.horizontalCenter
                                            text: qsTr("Radio")
                                            color: "white"
                                            font.pixelSize: parent.height * (2 / 15)
                                        }
                                    }
                    
                                    MouseArea{
                                        id: fm_mousearea
                                        anchors.fill: parent
                                        onClicked: {
                                            //radioScreen.visible = true
                                            main_menurect.visible = false
                                            radioSubScreen.visible = true
                                        }
                                    }
                    
                                }
                            }
                    
                            //Second Row
                            RowLayout{
                                id: secondrow
                                spacing: 50
                                visible: true
                                anchors.horizontalCenter: parent.horizontalCenter
                    
                                //VC
                                Rectangle{
                                    id:homeRect
                                    width: main_menurect.width/5
                                    height: main_menurect.height/4
                                    color: "transparent"
                                    Image {
                                        id: home_image
                                        source:"qrc:/Settings/AppbarIcon.png"
                                        anchors.centerIn: parent
                                        width: parent.width-15
                                        height: parent.height-15
                                        fillMode: Image.PreserveAspectFit
                                        antialiasing: true
                    
                                        Text {
                                            id: hometext
                                            anchors.top: parent.bottom
                                            anchors.horizontalCenter: home_image.horizontalCenter
                                            text: qsTr("Voice Control")
                                            color: "white"
                                            font.pixelSize: parent.height * (2 / 15)
                    
                                        }
                                    }
                                    Connections {
                                        target: VoiceRecogObject
                                        onPlaymusicsignal: {
                                            console.log("Recorded Voice :" + recordedString)
                    
                                            var receivedString = recordedString.slice(1, -1)
                                            var GotoMusicString = new String("GOTO MUSIC PLAYER")
                                            var GotoHomeString = new String("GOTO HOME")
                                            var GotoSettingString = new String("GOTO SETTINGS")
                                            var GotoVideoString = new String("GOTO VIDEO PLAYER")
                                            var GotoRadioString = new String("GOTO RADIO")
                                            var GotoMenuString = new String("GOTO MENU")
                                            var GotoMediaString = new String("GOTO MEDIA")
                                            var GotoPhoneString = new String("GOTO PHONE")
                                            var PlaySongString = new String("PLAY SONG")
                                            var PlayString = new String("PLAY")
                                            var PauseString = new String("PAUSE")
                                            var StopString = new String("STOP")
                                            var NextSongString = new String("NEXT SONG")
                                            var PreviousSongString = new String("PREVIOUS SONG")
                                            var VolumeIncreaseString = new String("VOLUME INCREASE")
                                            var VolumeDecreaseString = new String("VOLUME DECREASE")
                                            var RepeatOnString = new String("REPEAT ON")
                                            var RepeatOffString = new String("REPEAT OFF")
                                            var ShuffleOnString = new String("SHUFFLE ON")
                                            var ShuffleOffString = new String("SHUFFLE ON")
                                            var MuteString = new String("MUTE")
                    
                                            console.log(receivedString)
                                            if(receivedString.localeCompare(GotoMusicString) === 0)
                                            {
                                                console.log("play music")
                                                musicScreen.visible= true
                                                if(musicScreen.visible === true)
                                                {
                                                    if(receivedString.localeCompare(GotoMusicString) === 0){}
                                                }
                                            }
                                            else if(receivedString.localeCompare(GotoSettingString) === 0)
                                            {
                                                console.log("Settings Screen")
                                                settingScreen.visible= true
                                            }
                                            else if(receivedString.localeCompare(GotoHomeString) === 0)
                                            {
                                                console.log("Menu Screen")
                                                menusrcn.visible= true
                                            }
                                            else if(receivedString.localeCompare(GotoRadioString) === 0)
                                            {
                                                console.log("Radio Screen")
                                                radioSubScreen.visible= true
                                            }
                                            else if(receivedString.localeCompare(GotoVideoString) === 0)
                                            {
                                                console.log("Radio Screen")
                                                radioSubScreen.visible= true
                                            }
                                            else if(receivedString.localeCompare(GotoMediaString) === 0)
                                            {
                                                console.log("Media Screen")
                                                vedioScreen.visible= true
                                            }
                                            else if(receivedString.localeCompare(GotoPhoneString) === 0)
                                            {
                                                console.log("Phone Screen")
                                                phoneScreen.visible= true
                                            }
                                            else if(receivedString.localeCompare(PlaySongString) === 0)
                                            {
                                                console.log("Song Play")
                                                musicScreen.visible= true
                                                checkicon= true
                                                mysong.openFile()
                                                mediaPlayObject.play_image="qrc:/MediaPlayer/pauseIcon.png"
                                                if(checkicon == true)
                                                {
                                                    if(play_image.source==="qrc:/MediaPlayer/pauseIcon.png")
                                                    {
                                                        mysong.pausemusic()
                                                        play_image.source="qrc:/MediaPlayer/PlayIcon.png"
                                                    }
                                                    else
                                                    {
                                                        mysong.pausemusic()
                                                        play_image.source="qrc:/MediaPlayer/pauseIcon.png"
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                console.log("please try again")
                                            }
                                        }
                                    }
                                    MouseArea {
                                        anchors.fill: parent
                                        onClicked: {
                                            VoiceRecogObject.vStartProcess()
                                        }
                                    }
                                }
                    
                                // Settings
                                Rectangle{
                                    id:settingsRect
                                    width: main_menurect.width/5
                                    height: main_menurect.height/4
                                    color: "transparent"
                    
                                    Image {
                                        id: setting_image
                                        source: "qrc:/MainPage/AppbarIcon3.png"
                                        width: parent.width-15
                                        height: parent.height-15
                                        smooth: true
                                        fillMode: Image.PreserveAspectFit
                                        anchors.centerIn: parent
                                        antialiasing: true
                    
                                        Text {
                                            id: settingtext
                                            anchors.top: parent.bottom
                                            anchors.horizontalCenter: setting_image.horizontalCenter
                                            text: qsTr("Settings")
                                            color: "white"
                                            font.pixelSize: parent.height * (2 / 15)
                    
                                        }
                                    }
                                    MouseArea{
                                        id: settings_mousearea
                                        anchors.fill: parent
                                        onClicked: {
                                            settingScreen.visible = true
                                            main_menurect.visible = false
                                        }
                                    }
                                }
                    
                                Rectangle{
                                    id:tvRect
                                    width: main_menurect.width/5
                                    height: main_menurect.height/4
                                    color: "transparent"
                                    Image {
                                        id: tv_image
                                        source: "qrc:/MainPage/tv-icon.png"
                                        width: parent.width-6
                                        height: parent.height-6
                                        smooth: true
                                        fillMode: Image.PreserveAspectFit
                                        anchors.centerIn: parent
                                        antialiasing: true
                                    }
                    
                                    Text {
                                        id: tvtext
                                        anchors.top: parent.bottom
                                        anchors.horizontalCenter: tv_image.horizontalCenter
                                        text: qsTr("Televison")
                                        color: "white"
                                        font.pixelSize: parent.height * (2 / 15)
                    
                                    }
                    
                                    MouseArea{
                                        id: tv_mousearea
                                        anchors.fill: parent
                                        onClicked: {
                                            tvScreen.visible = true
                                            main_menurect.visible = false
                                        }
                                    }
                    
                    
                    
                                }
                    
                    
                            }
                        }
                    }
                    

                    the condition is within connections,
                    mediaPlayObject.play_image="qrc:/MediaPlayer/pauseIcon.png"

                    E Offline
                    E Offline
                    Eeli K
                    wrote on last edited by
                    #9

                    @Naveen_D
                    So you basically know how to do it, but have some specific problem here. It's still difficult to find the reason because the code you gave requires the whole project. Either give a link to the project source or narrow down the problem to a small self-contained ad-hoc project which we can run. Or at least copy here the application output (not just one line!).

                    1 Reply Last reply
                    0
                    • 6thC6 Offline
                      6thC6 Offline
                      6thC
                      wrote on last edited by
                      #10

                      What about creating some objects states (and maybe transitions too)?
                      https://wiki.qt.io/QML_States_Controlling
                      instead of messing with the insides of another class you are utilizing a defined state/interface and you design your module to handle the various state configurations/behaviors expected of it.

                      Naveen_DN 1 Reply Last reply
                      0
                      • 6thC6 6thC

                        What about creating some objects states (and maybe transitions too)?
                        https://wiki.qt.io/QML_States_Controlling
                        instead of messing with the insides of another class you are utilizing a defined state/interface and you design your module to handle the various state configurations/behaviors expected of it.

                        Naveen_DN Offline
                        Naveen_DN Offline
                        Naveen_D
                        wrote on last edited by
                        #11

                        @6thC I am using voice recognition over here based on the voice i am doing some changes is it possible using states ???

                        Naveen_D

                        1 Reply Last reply
                        0
                        • 6thC6 Offline
                          6thC6 Offline
                          6thC
                          wrote on last edited by 6thC
                          #12

                          Well, I don't know the conditions to change states, that would be up to you. But sure. I think. It's possible I misunderstand or didn't read what you want enough.

                          I use states for changing the gui, not images but color and animations based on sensor's numeric values.

                          states:
                            [
                                State { name: "inSpec";
                                    PropertyChanges { target: indicator; color: hudGreen;  }     
                                },
                                State { name: "warning";
                                    PropertyChanges { target: indicator; color: "gold";        }
                                },
                                State { name: "maximum";
                                    PropertyChanges { target: indicator; color: "red";         }
                                }
                          
                            transitions: [
                                Transition {
                                    from: "maximum"
                                    to: "inSpec"
                                    SequentialAnimation {
                                        loops: 1;
                                        ColorAnimation { duration: 300; from: "red";        to: hudGreen; }
                                        ColorAnimation { duration: 300; from: hudGreen; to: "transparent";}
                                    }
                                },
                                Transition {
                                    from: "warning"
                                    to: "inSpec"
                                    ColorAnimation { target: root; duration: 300}
                                    ColorAnimation { duration: 300; from: "red";        to: hudGreen; }
                                    ColorAnimation { duration: 300; from: hudGreen; to: "transparent";}
                                },
                          ...
                          

                          And I use this in a method where I pass a control as an argument (with the states and transitions in it) and the sensor value like:

                          function adjustState(control, value){
                          ... inSpec expression 
                                        control.state =  "inSpec";
                          ... warning expression 
                                        control.state =  "warning";
                          ... maximum expression 
                                        control.state =  "maximum";
                          
                          1 Reply Last reply
                          0
                          • Naveen_DN Offline
                            Naveen_DN Offline
                            Naveen_D
                            wrote on last edited by
                            #13

                            I tried using property aliasing...but no output can anyone pls guide me further in this matter....it would be helpful.

                            Naveen_D

                            1 Reply Last reply
                            0
                            • p3c0P Offline
                              p3c0P Offline
                              p3c0
                              Moderators
                              wrote on last edited by
                              #14

                              @Naveen_D You need to provide a very minimal complete code of your application which can reproduce the problem. This would be more useful for others to understand.

                              157

                              Naveen_DN 1 Reply Last reply
                              0
                              • p3c0P p3c0

                                @Naveen_D You need to provide a very minimal complete code of your application which can reproduce the problem. This would be more useful for others to understand.

                                Naveen_DN Offline
                                Naveen_DN Offline
                                Naveen_D
                                wrote on last edited by
                                #15

                                @p3c0 ya sure here is the code,

                                main.qml

                                import QtQuick 2.7
                                import QtQuick.Window 2.2
                                import QtQuick.Layouts 1.2
                                import QtQuick 2.5
                                
                                
                                Window {
                                    //    flags: Qt.FramelessWindowHint
                                
                                    title: qsTr("Infotainment")
                                    width: (Screen.width/4)+200
                                    height: (Screen.height/4)
                                    visible: true
                                
                                    ExampleRect1
                                    {
                                        id: rect1id
                                        visible: false
                                    }
                                
                                    ExampleRect2
                                    {
                                        id: rect2id
                                        visible: false
                                    }
                                    Row
                                    {
                                        id: rectrow
                                        spacing: 100
                                        anchors.centerIn: parent
                                        Rectangle {
                                            id: myRect
                                            width: 150; height: 100
                                            color: "transparent"
                                            border.color: "black"
                                            Text {
                                                id: rect1text
                                                text: qsTr("Rectangle1")
                                                font.bold: true
                                                font.pixelSize: 24
                                                color: "red"
                                                anchors.centerIn: parent
                                            }
                                
                                            MouseArea {
                                                id: mouseArea
                                                anchors.fill: parent
                                                onClicked: {
                                                    rect1id.visible= true
                                                    rectrow.visible = false
                                                    rect2id.visible= false
                                                }
                                            }
                                        }
                                
                                        Rectangle {
                                            id: myRect2
                                            width: 150; height: 100
                                            color: "transparent"
                                            border.color: "black"
                                            Text {
                                                id: rect2text
                                                text: qsTr("Rectangle2")
                                                font.bold: true
                                                font.pixelSize: 24
                                                color: "blue"
                                                anchors.centerIn: parent
                                            }
                                
                                            MouseArea {
                                                id: mouseArea2
                                                anchors.fill: parent
                                                onClicked: {
                                                    rect2id.visible= true
                                                    rectrow.visible= false
                                                    rect1id.visible= false
                                                }
                                            }
                                        }
                                    }
                                }
                                
                                

                                ExampleRect1.qml

                                import QtQuick 2.0
                                import QtQuick.Window 2.2
                                
                                Rectangle{
                                    id: mainRect
                                    width: (Screen.width/4)+200
                                    height: (Screen.height/4)
                                    visible: false
                                
                                    property alias imgSource : img.source
                                
                                
                                    Rectangle{
                                       id: imgRect
                                       implicitHeight: 100; implicitWidth: 150
                                       anchors.centerIn: parent
                                
                                       Image {
                                           id: img
                                           source: "qrc:/PlayIcon.png"
                                       }
                                    }
                                }
                                
                                

                                RectExample2.qml

                                import QtQuick 2.0
                                import QtQuick.Window 2.2
                                import QtQuick.Layouts 1.2
                                import QtQuick 2.5
                                
                                Rectangle{
                                    id :mainRect
                                    width: (Screen.width/4)+200
                                    height: (Screen.height/4)
                                
                                    ExampleRect1{
                                        id:exampleRect1Object
                                    }
                                
                                    Rectangle{
                                        id: voicerect
                                        implicitHeight: 100; implicitWidth: 150
                                        anchors.centerIn: parent
                                        color: "red"
                                
                                        Text {
                                            id: voiceText
                                            text: qsTr("Voice Recognition")
                                            anchors.centerIn: parent
                                            font.pixelSize: 18
                                        }
                                
                                        MouseArea{
                                            id: voicemousearea
                                            anchors.fill: parent
                                            onClicked: {
                                                rect1id.visible =true
                                                exampleRect1Object.imgSource= "qrc:/pauseIcon.png"
                                                mainRect.visible= false
                                            }
                                        }
                                    }
                                }
                                
                                

                                Naveen_D

                                1 Reply Last reply
                                0
                                • p3c0P Offline
                                  p3c0P Offline
                                  p3c0
                                  Moderators
                                  wrote on last edited by
                                  #16

                                  @Naveen_D Ok. And what do you require in this example ?

                                  157

                                  Naveen_DN 1 Reply Last reply
                                  0
                                  • p3c0P p3c0

                                    @Naveen_D Ok. And what do you require in this example ?

                                    Naveen_DN Offline
                                    Naveen_DN Offline
                                    Naveen_D
                                    wrote on last edited by
                                    #17

                                    @p3c0
                                    In the above example, in ExampleRect2.qml i have created an object of ExampleRect1.qml

                                    onClicked: {
                                    rect1id.visible =true
                                    exampleRect1Object.imgSource= "qrc:/pauseIcon.png"
                                    mainRect.visible= false
                                    }

                                    using that object i am changing the image set in exampleRect1.qml but the image remains same, it will not change...

                                    Naveen_D

                                    1 Reply Last reply
                                    0
                                    • p3c0P Offline
                                      p3c0P Offline
                                      p3c0
                                      Moderators
                                      wrote on last edited by
                                      #18

                                      @Naveen_D AFAICS you are creating 2 instances of ExampleRect1, one is in main.qml and other is in ExampleRect2.qml and you are trying to update this instance instead of one in main.qml

                                      157

                                      Naveen_DN 1 Reply Last reply
                                      0
                                      • p3c0P p3c0

                                        @Naveen_D AFAICS you are creating 2 instances of ExampleRect1, one is in main.qml and other is in ExampleRect2.qml and you are trying to update this instance instead of one in main.qml

                                        Naveen_DN Offline
                                        Naveen_DN Offline
                                        Naveen_D
                                        wrote on last edited by
                                        #19

                                        @p3c0 Ya i got the output...thanks

                                        Naveen_D

                                        1 Reply Last reply
                                        0
                                        • p3c0P Offline
                                          p3c0P Offline
                                          p3c0
                                          Moderators
                                          wrote on last edited by
                                          #20

                                          @Naveen_D Great!

                                          157

                                          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