1
TreeView
の現在の行番号と親行番号をパラメータとするQ_INVOKABLE関数を呼び出す一部のonClicked()
論理を含むQML TreeView
があります。問題は、私が何かを選択した後、クリックして何かを展開または折りたたむことです。以前の値は引き続き取得されているため、アプリケーションがクラッシュすることがあります。私はonCollapsed()
とアイテムを選択解除onExpanded()
にtreeView.selection.clearCurrentIndex()
とtreeView.selection.clearSelection()
を呼び出そうとしましたが、何らかの理由で、まだ以前に選択した項目から値を渡しました。QML TreeViewは、折りたたみまたは展開をクリックしたときに前の選択を渡します。
//main.qml
TreeView {
id: treeView
anchors.fill: parent
model: treeviewmodel
selection: ItemSelectionModel {
model: treeviewmodel
}
TableViewColumn {
role: "name_role"
title: "Section Name"
}
onCollapsed: {
treeView.selection.clearSelection() // deselects the item, but still passes the previous values
}
onExpanded: {
treeView.selection.clearSelection()
}
onClicked: {
console.log("Current Row: " + treeView.currentIndex.row + "Parent Row: " + treeView.currentIndex.parent.row)
//I need something here that will set treeView.currentIndex.row and treeView.currentIndex.parent.row to -1
//so that when I collapse or expand, -1 gets passed instead of the previous values
}
}
「onClicked」イベントで-1を渡すために、ユーザーがツリーを展開または折りたたんだときに知っておくべき属性があるはずです。 – Tarod
@Tarodあなたは属性をどういう意味ですか?あなたは精緻化できますか?ありがとう! –
折りたたんだ後にQ_INVOKABLE関数に-1を渡す必要がある場合は、ツリーを展開または展開した後にフラグを使用してtrueに設定します。その後、 'onClicked'イベントが呼び出されたときには、フラグをチェックします。それが真であれば-1をQ_INVOKABLE関数に渡します。あるいは、' treeView.currentIndex.row'と 'treeView.currentIndex.parent.row'を使用します。 falseの場合はQML。必要に応じてフラグ値をfalseに変更します。たぶん私は問題を理解していないかもしれませんが、それは私が質問を読んだ後に考えた解決策です。 – Tarod