Rubbish
2021-12-24 07:01 deepin
C++写UI好复杂,还是qml简单,qml的listview按照文档可以直接拿任意component作为列表元素显示
Reply Like 1 View the author
C++写UI好复杂,还是qml简单,qml的listview按照文档可以直接拿任意component作为列表元素显示
👍
2016年,在上海华师大和王勇见了一面,当时有五十多人的现场,王勇当众说他的偶像是唐凤。
万没想到,老王也有翻车的时候,现在这个东方不败,在国际上上蹿下跳,已经比臭虫还臭了。
估计老王也得后悔吧。
有机会可以尝试一下老王以前的Dtalk?
Popular Events
More
首先是王勇老师写的博客:https://www.jianshu.com/p/7cae18e66c70
在这篇博客中,我理解了DTK的列表实现的思路以及解决的问题,简而言之就是自己控制列表项的绘制,从而实现随心所欲的在列表项中显示任何东西。
为什么要再再重新造一个ListView控件?
虽然DTK这个方案已经非常好了,但若想要实现的列表非常简单,且还要想使用这个方案,还要通过继承的方式定义两个类(View和Item),多少有点麻烦,因此我希望能实现一种可以直接使用的列表控件,但也要保留自由绘制的优势。
思路
定义两个类,分别是View和Item,Item用于存储数据和指导绘制,View用于控制Item的尺寸,并将其以列表的形式实际绘制出来。
设计Item类
Item首先需要让其存储数据,由于数据的类型可能是多样的,因此我使用了C++的模板机制来将其定义为一个模板类。然后设置一个模板数据类型的成员变量,用作存储。
另外Item还需要指导绘制,这个我使用了函数指针去实现,可以通过设置该函数指针来设置绘制函数,然后再由View类对其调用,这样我们就可以控制绘制事件了。
设计View类
该类中需要存储一个Item类对象的列表,这部分使用QList实现。
然后在该函数的绘制函数中去逐个调用所有Item函数指针指向的绘制函数,这样就将列表显示出来了。
然后作为列表它还应该具有最基本的如滚动、选择的功能,这不是重点因此不多赘述。
调用
根据上述思路实现后,给大家展示最简单的使用:
效果:
wolai链接:https://www.wolai.com/3GnuxKHAGXr7hrDEoxESNG