如何用qml做一个炫酷的二级列表控件ExpandableList

如何用qml做一个炫酷的二级列表控件ExpandableList,第1张

expandablelistivew使用的数据分为两级,这两级可以没有任何关系。提示一下:1.一级用一套数据、二级用另外一套数据也可以,两套数据没有什么明确上的规定一定要有关系。2.一级数据给adapter的getGroupView使用,二级数据给adapter的getChildView使用。3.之所以糊涂是因为我们expandablelistivew使用的数据源一般都是一套数据,为了方便,二级数据会被包含在一级数据里面,在getChildView使用二级数据时,一般现货去到对应的一级数据,然后从一级数据中拿到对应的二级数据。4.初学者为避免出错,检查一下继承adapter时,重写的一些方法返回值有没有错误,避免反悔值有误,导致显示异常,比如getCount()方法,一级是多少就返回多少,不要默认给个0或者其他错误信息的数据。

本文对应的源码地址:

https://github.com/imtoby/CppModelForQMLExample

程序运行效果:

我们需要注意的是我们在使用 QAbstractListModel 时至少要实现的方法:

我们定义一个继承自 QAbstractListModel 的类 ObjectModel 用于管理 QObject 对象列表,并将其作为 ListView 的 model 传给 QML 端使用。

下面是其头文件的内容:

然后是实现文件:

这里定义一个继承自 QObject 的子类 TestItem,用于作为实际的数据结构存储类。

其头文件如下:

实现文件如下:

接下来我们定义一个数据管理类 ModelManager,其头文件如下:

实现文件如下:

接下来是用于测试的 main.cpp 文件的内容:

至于 QML 文件就相对很简单了:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11551770.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存