Программное добавление новой строки в подкласс QAbstractListModel
Внутри уже созданного подкласса QAbstractListModel, как добавить строку с данными в каждом столбце и связать QListView с новой строкой?
Кажется, что единственный способ сделать это - переопределить insertRow и setData в моей модели, а затем взломать их вместе в какой-то последовательности в другой функции, чтобы добавить строку. Должен ли я это делать? Разумеется, Qt должен упростить добавление новой строки.
Спасибо большое!
--Dany.
Ответы
Ответ 1
Просто измените хранилище данных модели, между beginInsertRows() и endInsertRows().
Например, скажем, у вас есть модель с плоским списком, и ваша модель хранит данные внутри QVector m_data. Вы хотите добавить список, т.е. Вставить строку в позицию 0:
beginInsertRows( QModelIndex(), 0, 0 ); //notify views and proxy models that a line will be inserted
m_data.prepend( somedata ); // do the modification to the model data
endInsertRows(); //finish insertion, notify views/models
Ответ 2
Боюсь, вам нужно это сделать. Из docs:
Модели, предоставляющие интерфейсы для изменяемых по размерам структур данных в виде списка, могут обеспечить реализацию insertRows() и removeRows().