Qt中,返回的QModelIndex类型的参数有四个,有没有人知道这四个参数是什么意思?希望详细一点,谢谢。
如果:QModelIndex(4,0,0x3b6d6e8,TreeModel(0x3b6ac48))返回的类型为上者,第一个参数代表row,第二个参数代表column,那...
如果:QModelIndex(4,0,0x3b6d6e8,TreeModel(0x3b6ac48)) 返回的类型为上者,第一个参数代表row,第二个参数代表column,那么第三个、第四个参数代表什么呢?
展开
展开全部
你仔细读一读assistant的Model/View Programming部分的Model Classes就知道了。
下面是QAbstractItemModel类的rowCount的说明:
int QAbstractItemModel::rowCount(const QModelIndex & parent = QModelIndex()) const
Returns the number of rows under the given parent. When the parent is valid it means that rowCount is returning the number of children of parent.
返回给定parent的行数。如果parent可用,实际上返回的是该parent的children数量。
但是显然你给的代码
model->removeRows(0,model->rowCount(QModelIndex()),QModelIndex());
这里的parent是QModelIndex(),而且从QModelIndex()类的构造函数说明来看,显然这个parent是invalid的。既然parent不可用,那么rowCount返回的是什么。我们的rowCount的说明没有指出来。
但是在Model/View Programming部分的Model Classes中的Rows and columns里面有一句话是这样说的
Top level items in a model are always referenced by specifying QModelIndex()as their parent item.
意思是一个model中的顶级item也就是Top level item 的parent,一直都是通过QModelIndex()来指定的。
所以你要知道一个model的所有行,你就必须使用QModelIndex()来作为其parent。如果你想知道一个model中的某个item下有多少行,你就需要将该item的modelindex作为parent。
所以
你的第一个问题:
是创造一个空的模型索引?被用于指出模型中无效的索引在哪个位置?
答案:是创造一个空的modelindex,但不是指出无效索引在哪,它仅仅提供一个invalid的对象,仅此而已。
第二个问题:
rowCount(QModelIndex())这个是模型的最大索引号吗?
答案:我想你应该问的是“QModelIndex()这个是模型的最大索引号吗?”,我上面已经说了,QModelIndex()构造一个invalid的QModelIndex对象作为parent,是为了对整个model做某种操作。
第三个问题:
rowCount(QModelIndex())这个是行数吗?
答案:Absolutely,it is.就是获取整个model的行数,这个从上下文或者函数名字就可以猜出来。只是你不知道为了给它传递的parent是一个invalid的QModelIndex对象而已。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询