Программно добавление новой строки в подкласс 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().