几天来,我一直在与QT,模特,观点,代表进行斗争 . 我希望在建筑方面知道,我在正确的轨道上 . 如果您对此发表评论,那么您会受到欢迎 .
目标:
可滚动好友列表,类似于Skype . 必须支持以下要求:
-
完全控制一行的绘制 . 通常,可变宽度的图标基于行所表示的对象的状态 .
-
行的可变高度,通常是所选行的更详细的行显示 .
-
为所选行添加了控件(操作按钮) .
-
完全控制列表的排序
-
通常是不同类型的行,伙伴或文本占位符,其标签指示其下方的好友类型(例如"offline contacts","online contacts") .
我的想法如下:
-
对列表视图控件使用QListView使用派生的QAbstractList模型来保存好友数据 . 它将有一个std :: vector数组,其集合为"MyContactClass" . 每个"MyContactClass"实例都代表一个伙伴及其相关的数据字段
-
使用QAbstractItemDelegate派生类来处理行的绘制和sizeHinting
-
连接模型并委托给QListView
-
填充模型......
-
填充QListView
我知道有很多细节,这根本不是微不足道的 . 我想问你的问题是:#1到#6的项目在架构上是正确的,因为我正在尝试做什么 .
1 回答
我在Qt中做了很多模型/视图编程 . 你的方法对我来说似乎是对的 .
您可能有一个棘手的时间将这些操作按钮添加到委托 . QAbstractItemDelegate对自定义小部件不起作用,但对样式选项控件也很好 .
当然,您需要在MOC中注册MyContactsClass,以便可以在QVariant中使用它 .
除此之外,看起来不错 .