3
假設我有一個ListView
可點擊委託組件(或GridView
或Repeater
)。這些委託組件需要在觸發時發送信號以及自定義數據,並由ListView
的父級挑選。如何實現這種信號綁定?如何綁定到來自QML中ListView中委託組件的信號
例如以下代碼是我的嘗試,但我不知道如何將代理組件的trigger
信號綁定到root
項目中的componentTriggered
信號?
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)
}
}
}
這真的很棒。謝謝。我沒有意識到你可以在實例化或分配它的過程中實質性地擴展組件。 –
恩,謝謝你:)快樂編碼! ;) – Tarod