У меня возник вопрос об уведомлении модели изменений, внесенных в какой-либо другой объект, в котором хранится ссылка.Уведомляющий подкласс QAbstractItemModel об изменениях
Я знаю сигнал dataChanged(), но я не уверен, как его использовать. Например, моя модель хранит ссылку на какой-то другой объект (назовем его myObjPtr). Модель запрашивает myObjPtr для ее содержимого только тогда, когда на модели вызываются методы rowCount(), columnCount(), data() и другие.
Затем, если я вношу некоторые изменения в содержимое myObjPtr, как я должен уведомить модель, чтобы она могла испускать сигнал dataChanged() с правильными аргументами? Должен ли я использовать метод setData() модели? Какие аргументы я должен передать, если я, например, удалил или заменил некоторые элементы в myObjPtr?
спасибо.
Благодарим за подсказку по методу reset(). Не могли бы вы более подробно объяснить случай с dataChanged()? Я спросил в исходном сообщении о том, какие аргументы должны быть переданы в dataChanged(), когда я удаляю/добавляю/заменяю элементы в myObjPtr (myObjPtr фактически имеет древовидную структуру). Должен ли я создавать новые экземпляры QModelIndex для таких элементов, которые будут использоваться в вызове 'emit dataChanged (topLeft, bottomRight);'? –
Если myObjPtr может предоставить достаточно информации о том, что изменилось, используйте сигнал dataChanged. Да, для этого нужно создать новые экземпляры QModelIndex. Обязательно создайте их с помощью методов модели или установите родительский элемент для индексов правильно, чтобы Qt точно знал, какие элементы модели были изменены. –