1
我有一個包含一些onClicked()
邏輯的QML TreeView
,該邏輯調用Q_INVOKABLE函數,該函數接受TreeView
的當前行號和父行號作爲參數。問題是,當我選擇一些東西,然後點擊展開或摺疊某些東西。以前的值仍然通過,有時會導致應用程序崩潰。我嘗試致電treeView.selection.clearCurrentIndex()
和treeView.selection.clearSelection()
,其中onCollapsed()
和onExpanded()
取消選擇該項目,但由於某種原因仍然傳遞先前選擇的項目中的值。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
@塔羅德你的意思是什麼?你能詳細說明嗎?謝謝! –
如果在摺疊或展開樹後需要將-1傳遞給Q_INVOKABLE函數,請在摺疊或展開樹後使用標誌並將其設置爲true。之後,當調用'onClicked'事件時,如果它爲true,則檢查flag:pass-1到你的Q_INVOKABLE函數,或者使用提供的'treeView.currentIndex.row'和'treeView.currentIndex.parent.row' QML如果爲false。需要時將標誌值更改爲false。也許我不明白這個問題,但這是我在閱讀問題後想到的解決方案。 – Tarod