在已经实例化的QAbstractListModel子类中,如何在每列中添加包含数据的行,并让关联的QListView显示新行?
似乎唯一的方法是在我的模型中重新实现insertRow和setData,然后在另一个函数中以某种顺序将它们一起破解以添加一行。我必须这样做吗?当然Qt必须使添加新行更容易。
非常感谢! --Dany。
答案 0 :(得分:15)
只需在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 :(得分:1)
我担心你必须这样做。来自docs:
为可调整大小的类似列表的数据结构提供接口的模型可以提供insertRows()和removeRows()的实现。