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
Forum Updated to NodeBB v4.3 + New Features

Access item inside ListView via delegate

Scheduled Pinned Locked Moved Solved QML and Qt Quick
qmllistviewdelegatebutton
14 Posts 3 Posters 4.5k 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