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.6k 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.
  • J.HilkJ J.Hilk

    hi @Ratzz

    you already "listen" to the listModel count property for your onClicked why don't you make the visible property depending on it as well ?

                      Column {
                            width: 100
                            Button {
                                text: "Delete"
                                visible: listModel.count > 1
                                onClicked:{
                                    if(listModel.count > 1)
                                        listModel.remove(index);
                                }
                            }
                        }
    
    RatzzR Offline
    RatzzR Offline
    Ratzz
    wrote on last edited by
    #4

    @J-Hilk said in Access item inside ListView via delegate:

    you already "listen" to the listModel count property for your onClicked why don't you make the visible property depending on it as well ?

    It just worked :) Thank you @J-Hilk

    --Alles ist gut.

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