私はJavaScript式(currentContainer
)によって定義されたプロパティを持つ:QmlのJavaScriptバインディングのイベントが変更されましたか?
Item {
id: theContainer
property alias currentIndex: theListView.currentIndex
signal onCurrentIndexChanged()
property MyCustomCppContainer currentContainer: {
if(theListView.currentIndex >= 0)
theModel.getCustomContainer(theListView.currentIndex)
else
null
}
signal onCurrentContainerChanged() // nobody calls this signal (yet)
MyCustomCppModel {
id: theModel
}
ListView {
id: theListView
anchors.fill: parent
model: theModel
currentIndex: -1
onCurrentIndexChanged: theContainer.onCurrentIndexChanged()
/* Other properties stripped for example */
}
}
悲しいことに、私はいつも最後に選択されたコンテナではなく、現在選択されている1取得:
ContainerItem {
onCurrentIndexChanged: {
//On first change, currentContainer is null
//though the first one was selected
//After selecting the second entry
//I get the result I expected last time
console.log(currentContainer.name);
}
}
を、私は解決策を考えますcurrentContainer
:onCurrentContainerChanged()
の別の信号を持つことになります。
しかし、誰がこの特別な信号を呼び出しますか?
信号onCurrentContainerChanged(ハンドラ:onOnCurrentContainerChanged)とハンドラonCurrentIndexChanged(ハンドラonOnCurrentIndexChanged)は、どのように使用しますか? – derM
現在選択されているアイテムに応じてインタラクティブマップを変更したいと考えています。マップ自体はカスタムQPainterベースのアイテムです。ハイライトを追加したり削除したりするメソッドしかサポートしていないので、単にデータバインディングをここで使用することはできません。 –
あなたはバインディングでコードをデバッグしようとしました: 'property MyCustomCppContainer currentContainer:[...]' with console.log(...) – derM