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. Access item inside ListView via delegate

Access item inside ListView via delegate

Scheduled Pinned Locked Moved Solved QML and Qt Quick
qmllistviewdelegatebutton
14 Posts 3 Posters 6.0k Views 1 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.
  • RatzzR Ratzz

    I was able to access the TextEdit value using property value which is set to model via ListElement something like this

    ListElement { editProperty: "Initial text" }
    

    and on click event

     onClicked: { listModel.setProperty(index, "editProperty", editField.text) }
    
    

    Still I am unable to access the delete Button . Does anyone know to access it?

    RatzzR Offline
    RatzzR Offline
    Ratzz
    wrote on last edited by
    #5

    @Ratzz said in Access item inside ListView via delegate:

    I was able to access the TextEdit value using property value which is set to model via ListElement something like this

    @J-Hilk , Is there any better way than this ?

    --Alles ist gut.

    J.HilkJ 1 Reply Last reply
    0
    • RatzzR Ratzz

      @Ratzz said in Access item inside ListView via delegate:

      I was able to access the TextEdit value using property value which is set to model via ListElement something like this

      @J-Hilk , Is there any better way than this ?

      J.HilkJ Offline
      J.HilkJ Offline
      J.Hilk
      Moderators
      wrote on last edited by
      #6

      @Ratzz
      for example, you could just bind the text directly:

                          Column {
                              width: 50
                              TextEdit { text: editableText}
                          }
      ...
      ...
           ListModel {
                  id: listModel
                  ListElement {
                          editableText: "SomeText"
                  }
           }
      

      Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


      Q: What's that?
      A: It's blue light.
      Q: What does it do?
      A: It turns blue.

      RatzzR 1 Reply Last reply
      2
      • RatzzR Offline
        RatzzR Offline
        Ratzz
        wrote on last edited by
        #7

        That works as well

        --Alles ist gut.

        1 Reply Last reply
        0
        • J.HilkJ J.Hilk

          @Ratzz
          for example, you could just bind the text directly:

                              Column {
                                  width: 50
                                  TextEdit { text: editableText}
                              }
          ...
          ...
               ListModel {
                      id: listModel
                      ListElement {
                              editableText: "SomeText"
                      }
               }
          
          RatzzR Offline
          RatzzR Offline
          Ratzz
          wrote on last edited by Ratzz
          #8

          @J-Hilk
          Now when I tried with empty text

          ListModel {
                      id: listModel
                      ListElement {
                              editableText: ""
                      }
               }
          

          and then I tried to change the text field value manually say "sometext" . Button event returned null

          onClicked: { 
          listModel.get(0).editableText 
          console.log(listModel.get(0).editableText ) //Null
          }
          

          while button event setting property gave proper result

          onClicked: { 
          listModel.setProperty(index, "editableText ", id.text)
          console.log(listModel.get(0).editableText ) //"sometext"
          }

          --Alles ist gut.

          J.HilkJ GrecKoG 2 Replies Last reply
          0
          • RatzzR Ratzz

            @J-Hilk
            Now when I tried with empty text

            ListModel {
                        id: listModel
                        ListElement {
                                editableText: ""
                        }
                 }
            

            and then I tried to change the text field value manually say "sometext" . Button event returned null

            onClicked: { 
            listModel.get(0).editableText 
            console.log(listModel.get(0).editableText ) //Null
            }
            

            while button event setting property gave proper result

            onClicked: { 
            listModel.setProperty(index, "editableText ", id.text)
            console.log(listModel.get(0).editableText ) //"sometext"
            }
            J.HilkJ Offline
            J.HilkJ Offline
            J.Hilk
            Moderators
            wrote on last edited by
            #9

            @Ratzz interesting

            I usually have c++ based models, so my experience with QML models is limited 😕

            Maybe someone else know more about this behavior


            Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


            Q: What's that?
            A: It's blue light.
            Q: What does it do?
            A: It turns blue.

            RatzzR 1 Reply Last reply
            1
            • J.HilkJ J.Hilk

              @Ratzz interesting

              I usually have c++ based models, so my experience with QML models is limited 😕

              Maybe someone else know more about this behavior

              RatzzR Offline
              RatzzR Offline
              Ratzz
              wrote on last edited by Ratzz
              #10

              @J-Hilk
              okay Fine.

              --Alles ist gut.

              1 Reply Last reply
              0
              • RatzzR Ratzz

                @J-Hilk
                Now when I tried with empty text

                ListModel {
                            id: listModel
                            ListElement {
                                    editableText: ""
                            }
                     }
                

                and then I tried to change the text field value manually say "sometext" . Button event returned null

                onClicked: { 
                listModel.get(0).editableText 
                console.log(listModel.get(0).editableText ) //Null
                }
                

                while button event setting property gave proper result

                onClicked: { 
                listModel.setProperty(index, "editableText ", id.text)
                console.log(listModel.get(0).editableText ) //"sometext"
                }
                GrecKoG Offline
                GrecKoG Offline
                GrecKo
                Qt Champions 2018
                wrote on last edited by
                #11

                @Ratzz said in Access item inside ListView via delegate:

                listModel.get(0).editableText

                What is that line supposed to do? You are not modifying anything here

                onClicked: { 
                    listModel.setProperty(index, "editableText ", textEdit.text)
                }
                

                just do that instead:

                onClicked: editableText = textEdit.text
                
                1 Reply Last reply
                1
                • RatzzR Offline
                  RatzzR Offline
                  Ratzz
                  wrote on last edited by
                  #12

                  @GrecKo , Yes I can do that as well.

                  How can I get the updated text "editableText" as soon I change the value of TextEdit is changed?

                  --Alles ist gut.

                  GrecKoG 1 Reply Last reply
                  0
                  • RatzzR Ratzz

                    @GrecKo , Yes I can do that as well.

                    How can I get the updated text "editableText" as soon I change the value of TextEdit is changed?

                    GrecKoG Offline
                    GrecKoG Offline
                    GrecKo
                    Qt Champions 2018
                    wrote on last edited by
                    #13

                    @Ratzz console.log(editableText ), you have access to the role values (as context properties) corresponding to the model cell in the delegate

                    1 Reply Last reply
                    0
                    • RatzzR Offline
                      RatzzR Offline
                      Ratzz
                      wrote on last edited by Ratzz
                      #14

                      @GrecKo , I mean without the button, when I edit the values of TextEdit, I should be able to get the modified text. I tried via property. It always gave me empty

                      --Alles ist gut.

                      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