12

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

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

非常感谢!——丹妮。

4

2 回答 2

16

只需在 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
于 2011-01-16T16:08:13.780 回答
1

恐怕你必须那样做。从文档

为可调整大小的类似列表的数据结构提供接口的模型可以提供insertRows()removeRows()的实现。

于 2011-01-16T07:54:07.967 回答