У меня есть список с моделью списка c ++ и прямоугольник с mousarea в качестве делегата. Внутри моего кода к моей listmodel добавляются данные, и я делаю
beginResetModel();
list.append(element);
endResetModel();
Моя модель обновляется, и элемент выглядит нормально, но я не могу установить currentIndex для вновь созданного элемента.
Я пытаюсь использовать Component.onCompleted внутри делегата, вот так
Component.onCompleted: {
ListView.currentIndex = index;
console.log("Show List: ", ListView.currentIndex, index);
}
Но индекс в выводе журнала говорит, что currentIndex не меняется после того, как я установил его для индекса моей модели.
Я делаю то же самое в моей области мыши, в onClicked, и там все работает нормально.
Как мне сделать мой недавно созданный элемент listview currentItem / currentIndex?
Я используя этот currentIndex для изменения цвета созданного элемента (это внутри моего прямоугольного делегата)
color: ListView.currentIndex == index ? "lightred" : "darkred"
Есть ли лучшие способы сделать то, что я пытаюсь сделать, возможно?
Full пример кода ниже:
ListView {
id: listView
focus: true
clip: true
model: listModel
delegate: Rectangle {
id: listDelegate
color: listView.currentIndex == index ? "green" : "red"
height: 20
width: 100
radius: 2
Component.onCompleted: {
listView.currentIndex = index
console.log("Show List: ", listView.currentIndex, index)
}
MouseArea {
anchors.fill: parent
onClicked: {
listView.currentIndex = index
console.log("onClicked: ", listView.currentIndex, index)
}
}
}
}