Qt中,返回的QModelIndex类型的参数有四个,有没有人知道这四个参数是什么意思?希望详细一点,谢谢。

如果:QModelIndex(4,0,0x3b6d6e8,TreeModel(0x3b6ac48))返回的类型为上者,第一个参数代表row,第二个参数代表column,那... 如果:QModelIndex(4,0,0x3b6d6e8,TreeModel(0x3b6ac48)) 返回的类型为上者,第一个参数代表row,第二个参数代表column,那么第三个、第四个参数代表什么呢? 展开
 我来答
wc...3@33sn.cc
2017-06-26 · 超过24用户采纳过TA的回答
知道答主
回答量:85
采纳率:0%
帮助的人:23.4万
展开全部

你仔细读一读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对象而已。

我是小石头啊啊
2017-11-24
知道答主
回答量:1
采纳率:0%
帮助的人:928
展开全部
我也有同样的疑问,对于,第三个参数我也并不理解,但第四个参数,结合我俩的代码,我的理解是,这个参数打印的是你在view控件中添加的model的类型;我代码中view控件中添加的是QFileSystemModel()的模型,所以,我的打印的第四个参数为QFileSystemModel(0x4a4bf88) ,其中()中的字符串我的理解是这个model的指针地址,若我的理解有误,希望大神提出指正~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式