Программное добавление новой строки в подкласс QAbstractListModel - PullRequest
11 голосов
/ 16 января 2011

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

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

Большое спасибо! --Dany.

Ответы [ 2 ]

15 голосов
/ 16 января 2011

Просто измените хранилище данных вашей модели между 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
1 голос
/ 16 января 2011

Боюсь, ты должен сделать это таким образом. Из документов :

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

...