Я пытаюсь реализовать функцию обратного вызова в моем QML ListModel для выполнения некоторых операций при изменении данных внутри ListModel. По-видимому, это невозможно создать ... Изменены обработчики для отдельных пользовательских свойств в ListModel. Итак, я пытаюсь использовать обработчик onDataChanged, доступный для ListModel.QML ListModel onDataChanged issues
ListModel {
id: model
onDataChanged: {
console.warn("onDataChanged: "+get(topLeft).val + " vs. " + get(bottomRight).val)
}
}
Однако onDataChanged только когда-либо, кажется, ссылается на самый первый элемент в ListModel. То есть, topLeft и bottomRight всегда указывают на первый элемент, даже когда я манипулирую элементом вниз по списку.
Здесь мне нужен надежный обработчик, который точно отражает правильную строку в ListModel, когда он срабатывает.
Если вы используете [универсальную объектную модель] (http://stackoverflow.com/questions/35160909/how-to-create-a-generic-object-model-for-use-in-qml/35161903#35161903), вы можете использовать регулярные свойства с отдельными уведомлениями об изменении. – dtech
Невозможно из-за ограничений проекта. Почему onDataChanged возвращает первую строку при манипулировании другой строкой? Я просто неправильно использую эти параметры? – user1765354
Аргументами 'QAbstractItemModel :: dataChanged()' являются 'QModelIndex', то есть объекты типа класса. Вы передаете их функциям, ожидающим целых чисел, среда JavaScript, скорее всего, совершит одно из своих магических преобразований. Использование ListModel для данных, изменение которых является нечетным, обычно указывает, что правильная пользовательская модель будет лучше. –