假设我有一个ListView
可点击的委托组件(或GridView
or Repeater
)。这些委托组件需要在触发时发出信号以及自定义数据,该信号可以由父组件拾取ListView
。如何实现这种信号结合?
例如以下代码是我的尝试,但我不知道如何绑定trigger
委托组件的信号到componentTriggered
信号在root
item?
Item {
id: root
anchors.fill: parent
signal componentTriggered(string name)
onComponentTriggered: {
console.log(name + ' component was triggered')
}
ListModel {
id: myModel
ListElement { name: "alpha" }
ListElement { name: "beta" }
ListElement { name: "gamma" }
ListElement { name: "delta" }
}
ListView {
id: myListView
width: 100
height: 600
model: myModel
delegate: TheDelegate { name: model.name }
}
}
哪个访问TheDelegate.qml
import QtQuick 2.0
Rectangle {
id: root
width: 100
height: 50
color: "steelblue"
border.color: "white"
border.width: 2
property string name
signal trigger(string name)
Text {
anchors.centerIn: parent
text: model.name
}
MouseArea {
anchors.fill: parent
onClicked: {
console.log(root.name + ' clicked')
root.trigger(root.name)
}
}
}
您可以连接两个信号Component.onCompleted
处理程序。
使用你的代码,它会是这样的:
ListView {
id: myListView
width: 100
height: 600
model: myModel
delegate: TheDelegate {
name: model.name
Component.onCompleted: {
trigger.connect(root.componentTriggered)
}
}
}
而不是调用信号componentTriggered
您也可以实现一个功能,但这取决于您的要求。无论如何信号都是好的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)