Программно добавление новой строки в подкласс QAbstractListModel

в уже созданном подклассе QAbstractListModel, как добавить строку с данными в каждом столбце и отобразить связанную QListView новую строку?

кажется, что единственный способ сделать это-переопределить insertRow и setData в моей модели, а затем взломать их вместе в какой-то последовательности в другой функции, чтобы добавить строку. Должен ли я это сделать? Конечно, Qt должен облегчить добавление новой строки.

спасибо! -- Дэни.

2 ответов


просто измените хранилище данных вашей модели между 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

боюсь, вам придется сделать это таким образом. От docs:

модели, которые предоставляют интерфейсы для изменения размера списка, как структуры данных могут обеспечить реализации insertRows() и removeRows().