以编程方式将新行添加到QAbstractListModel子类

时间:2011-01-16 00:19:18

标签: qt qlistview

在已经实例化的QAbstractListModel子类中,如何在每列中添加包含数据的行,并让关联的QListView显示新行?

似乎唯一的方法是在我的模型中重新实现insertRow和setData,然后在另一个函数中以某种顺序将它们一起破解以添加一行。我必须这样做吗?当然Qt必须使添加新行更容易。

非常感谢! --Dany。

2 个答案:

答案 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()的实现。