从qml中列表视图外部的文本字段在列表视图中的标签中设置文本

Set text in a label in a listview from a textfield outside listview in qml

我在 QML 中有以下 ListView:

ListView{
    id:daylistView
    width:parent.width
    height:parent.height - eventDayLabel.height

    boundsBehavior:Flickable.StopAtBounds
    highlightRangeMode: ListView.StrictlyEnforceRange

    orientation: Qt.Vertical
    anchors.top:eventDateRow.bottom
    clip:true
    focus:true
    model: 24

    currentIndex : calendarMonth.selectedDate.getDate() === new Date().getDate()
                   && calendarMonth.selectedDate.getMonth() === new Date().getMonth()?getHour():12

    interactive: true

    delegate: Item{

            id:hourItem
            property var hourTime:hourweeklistviewLabel
            width: daylistView.width
            height: 60

            MouseArea{
                anchors.fill:parent
                onClicked:{
                    windowLoader.active =true
                    daylistView.currentIndex=index
                }
            }

            Rectangle {
                z:4
               id:hourdaylistviewindexLine
               y:getdayMinute()

               width:hourItem.width
               height:2
               border.color: calendarMonth.selectedDate.getDate()===new Date().getDate()
                             && getHour() === hourweeklistviewLabel.text
                             && calendarMonth.selectedDate.getMonth() === new Date().getMonth()
                             ?"red" : "transparent"

               border.width:1

            }
            Rectangle {
               z:4
               id:hourline
               anchors.verticalCenter: daylistView
               width:daylistView.width
               height:2
               border.color: "lightgray"

               border.width:1

            }

            Label{
               z:4
               id:hourweeklistviewLabel
               anchors.verticalCenter: parent

               text:['00','01','02','03',
                   '04','05','06','07','08','09','10','11','12','13',
                       '14','15','16','17','18','19','20','21','22','23'][index]
               color: getHour() === hourweeklistviewLabel.text
                      && calendarMonth.selectedDate.getDate() === new Date().getDate()
                      && calendarMonth.selectedDate.getDay() === new Date().getDay()
                      ? systemPalette.highlight : "lightgray"

            }
            Label{
                z:4
                id:notesLabel
                anchors.left:hourweeklistviewLabel.right
                //text:" "
            }
        }
      }
    }

这是一个日历应用程序,其中 ListView 代表每小时 time.The 代表包括一个鼠标区域,两个矩形和两个 labels.The 一个 Label 被读取 only.In 另一个 Label,我想从 ListView 外部的 TextInput 设置文本,从另一个 window.Far 更多 objective 是在特定时间显示标签,这意味着在 ListView.Until 的特定行中现在我管理获取 currentItem 小时,但我无法在 currentIndex 的 ListView 中的标签中设置文本,尽管我尝试了很多在 web.If 中找到的建议方法,但我找到了一种在 currenItem 标签中设置文本的方法然后我可以选择在 Listview 的任何其他索引中设置它。

正如@SoheilArmin 评论的那样,解决方案在于将 Label 文本绑定到 property.In ListView 代码:

  delegate: Item{

        id:hourItem
        property var hourTime:hourweeklistviewLabel

        **property var notetaking: notesLabel**

        width: daylistView.width
        height: 60

设置property var notetaking: notesLabel.

然后在 TextField 中:

  TextField {
            id:title
            x:50
            y:20
            placeholderText :'Enter Note'
            text:daylistView.currentItem.notetaking.text
        }

设置text:daylistView.currentItem.notetaking.text

因此,我们有一个双向绑定。 还定义一个按钮,以便可以将文本设置为标签:

Button {
                        id: button
                        text: qsTr("Add Note")
                        anchors.centerIn:parent

                        onClicked: {
                                 if (title.text !==""){daylistView.currentItem.notetaking.text= title.text}
                                 else{}

                        }
                    }