首页 文章

QT,架构:“好友列表”的解剖

提问于
浏览
0

几天来,我一直在与QT,模特,观点,代表进行斗争 . 我希望在建筑方面知道,我在正确的轨道上 . 如果您对此发表评论,那么您会受到欢迎 .

目标:

可滚动好友列表,类似于Skype . 必须支持以下要求:

  • 完全控制一行的绘制 . 通常,可变宽度的图标基于行所表示的对象的状态 .

  • 行的可变高度,通常是所选行的更详细的行显示 .

  • 为所选行添加了控件(操作按钮) .

  • 完全控制列表的排序

  • 通常是不同类型的行,伙伴或文本占位符,其标签指示其下方的好友类型(例如"offline contacts","online contacts") .

我的想法如下:

  • 对列表视图控件使用QListView使用派生的QAbstractList模型来保存好友数据 . 它将有一个std :: vector数组,其集合为"MyContactClass" . 每个"MyContactClass"实例都代表一个伙伴及其相关的数据字段

  • 使用QAbstractItemDelegate派生类来处理行的绘制和sizeHinting

  • 连接模型并委托给QListView

  • 填充模型......

  • 填充QListView

我知道有很多细节,这根本不是微不足道的 . 我想问你的问题是:#1到#6的项目在架构上是正确的,因为我正在尝试做什么 .

1 回答

  • 1

    我在Qt中做了很多模型/视图编程 . 你的方法对我来说似乎是对的 .

    您可能有一个棘手的时间将这些操作按钮添加到委托 . QAbstractItemDelegate对自定义小部件不起作用,但对样式选项控件也很好 .

    当然,您需要在MOC中注册MyContactsClass,以便可以在QVariant中使用它 .

    除此之外,看起来不错 .

相关问题