简介
今日实现界面效果

联系人列表
我们自定义一个ChatUserList类,用来管理聊天列表。其声明如下:
1  | class ContactUserList : public QListWidget  | 
具体实现
1  | ContactUserList::ContactUserList(QWidget *parent)  | 
构造函数中关闭了滚动条的显示,重写了事件过滤器,实现了根据鼠标区域判断是否显示滚动条的功能。
并且实现了点击其中某个item响应对应的功能。并根据不同的item类型跳转不同的页面。
联系人item
因为每一个item都是我们自己定义的,所以我们添加设计师界面类,界面布局如下所示

类的声明如下
1  | class ConUserItem : public ListItemBase  | 
具体实现
1  | ConUserItem::ConUserItem(QWidget *parent) :  | 
这样我们启动程序就能看到模拟的联系人列表被加载进来了。
申请列表
申请页面ui布局如下

我们新增ApplyFriendPage类,用来显示申请列表
1  | class ApplyFriendPage : public QWidget  | 
具体实现
1  | ApplyFriendPage::ApplyFriendPage(QWidget *parent) :  | 
因为每个item自定义,所以我们新增设计师界面类ApplyFriendItem
界面布局

类的声明如下:
1  | class ApplyFriendItem : public ListItemBase  | 
以下为具体实现
1  | ApplyFriendItem::ApplyFriendItem(QWidget *parent) :  | 
申请列表类ApplyFriendList的声明如下
1  | class ApplyFriendList: public QListWidget  | 
具体实现
1  | ApplyFriendList::ApplyFriendList(QWidget *parent)  | 
然后在ChatDialog的stackedWidget中将friend_apply_page升级为ApplyFriendPage.
这样我们启动程序就能看到联系人列表和申请列表了。
下一步还需要写QSS美化以下
1  | #con_user_list {  | 
源码连接
https://gitee.com/secondtonone1/llfcchat
视频连接
https://www.bilibili.com/video/BV1SS42197Yo/?vd_source=8be9e83424c2ed2c9b2a3ed1d01385e9