• 13620阅读
  • 10回复

如何实现类似QQ联系人列表 [复制链接]

上一主题 下一主题
离线cibiren
 

只看楼主 倒序阅读 楼主  发表于: 2013-11-28
如歌 实现类似QQ联系人列表,给个思路
QQ列表效果如图:


图1. 好友分组折叠






图2.鼠标移动到“好友分组2”上(注意这个分组颜色有变)





图3.展开某个分组




图4.鼠标移动到某个好友上(颜色有变化)





我有两个基本思路
  思路 1.利用QListView,修改其列表项,假设为MyItem,但存在一个问题,好友分组域好友信息,这两个项,内容相差很大,不能用一个MyItem类
统一起来。图1 的好友分组项,与图3的某个好友项,不便于用一个MyItem 来表示


  思路2:不用模型视图框架,每一个分组用一个自定义OneGroup类来表示,多个好友分组用垂直布局管理器纵向排列,如图1
              OneGroup窗口类的实现,上部显示三角图标、分组名及成员数目,下面是多个OneFriend类纵向排列,如图4
              OneFriend窗口类表示每一个好友信息。OneGroup类可以展开和折叠。

     思路2感觉灵活行大些。不知道这两种方法是否可行。

     或者,谁做过类似的事情,有没有更好的办法,请指教。
离线XChinux

只看该作者 1楼 发表于: 2013-11-28
可以用QTreeView和自定义model和写delegate实现。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线麻菜

只看该作者 2楼 发表于: 2013-12-02
我之前弄了个小demo,使用的是 QTreeWidget  作为用户列表控件,每个Item都是一个QWidget,QWidget上的头像是QLabel,其他同样的添加并调整QWidget大小,每一个QWidget是一个用户对象,新加一个用户,就往QTreeWidget的Item中添加一个QWidget,取数据就从QTreeWidget的Item中取得该QWidget对象即可,鼠标选中与悬停效果,只需要在QTreeQWidget中,对item添加hover和selected的qss样式即可。


实现的效果如下:


0.登录截图效果



1.登录两个客户端时的在线与离线效果



2.鼠标在用户列表中选中与悬停时的效果(深黄色为选中,淡黄色为鼠标悬停)






(完)
离线彩阳

只看该作者 3楼 发表于: 2013-12-03
要点是QTreeView和delegate。
上海Qt开发联盟,热忱地欢迎你的加入!
离线cibiren

只看该作者 4楼 发表于: 2013-12-05
回 2楼(麻菜) 的帖子
自定义 delegate, "每个Item都是一个QWidget" ?  但是,Delegate 类不是派生自Widge,怎么把Delegate设置为 QWidget,呢?我对 Qt的模型视图了解不是很深入。请指教,把你的DEMON发给我参考下吧。
离线cibiren

只看该作者 5楼 发表于: 2013-12-05
回 2楼(麻菜) 的帖子
哦,是QTreeWidget ,不是QTreeView
离线麻菜

只看该作者 6楼 发表于: 2013-12-20
回 4楼(cibiren) 的帖子
代码在这里:http://macai-projects.googlecode.com/svn/trunk/

不过在你那里可能不能直接编译通过,需要其他一些环境的配置(QXmpp和openssl),你只需要看RosterTree类,以及其中的insertItem中添加RosterWidgetItem(item)时的代码就可以了。demo还不完整的。如果要分组名与好友像QQ那样左对齐,将QTreeWidget设置setIndentation(0);就可以对齐了。如:


离线cibiren

只看该作者 7楼 发表于: 2013-12-25
我没有用QTreeWidget或QTreeView,自己用QWiget实现了
离线highmore

只看该作者 8楼 发表于: 2014-03-10
回 麻菜 的帖子
麻菜:代码在这里:http://macai-projects.googlecode.com/svn/trunk/
不过在你那里可能不能直接编译通过,需要其他一些环境的配置(QXmpp和openssl),你只需要看RosterTree类,以及其中的insertItem中添加RosterWidgetItem(item)时的代码就可以了。demo还不完整的。如果要分组名 .. (2013-12-20 11:23) 

那个。这个链接我没法进啊。。
离线flucheng

只看该作者 9楼 发表于: 2014-07-22
使用SVN
离线super_2015

只看该作者 10楼 发表于: 2015-12-12
回 flucheng 的帖子
flucheng:使用SVN (2014-07-22 17:31) 

为啥用svn下不下来
快速回复
限100 字节
 
上一个 下一个