sách gpt4 ăn đã đi

使用qt quick-ListView仿微信好友列表和聊天列表的示例代码

In lại Tác giả: qq735679552 Thời gian cập nhật: 27-09-2022 22:32:09 27 4
mua khóa gpt4 giày nike

CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.

这篇CFSDN的博客文章使用qt quick-ListView仿微信好友列表和聊天列表的示例代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1.视图模型介绍

在qml中、常见的view视图有

  • listview: 列表视图,视图中数据来自listmodel、xmllistmodel或c++中继承自qabstractitemmodel或qabstractlistmodel的自定义模型类
  • tableview: 和excel类似的视图
  • gridview: 网格视图,类似于home菜单那样,排列着一个个app小图标
  • pathview: 路径视图,可以根据用户自定义的path路径来显示不一样的视图效果
  • swipeview: 滑动视图,使用一组页面填充。每次只显示一个页面。用户可以通过横向滑动在页面之间导航,一般会将它与pageindicator结合使用

本章首先来学习listview.以微信好友列表为例

使用qt quick-ListView仿微信好友列表和聊天列表的示例代码

里面的每个好友就是由一个个 item 组成的,存在视图中的model里,然后写一个delegate组件,即可通过listview显示出来. 。

由于时间不是很多,所以本章实现的微信好友列表和聊天列表(v1版本)是通过模拟数据实现的,等后面有时间后,再来实现个一个真正的内网聊天工具. 。

2.demo实现(支持自适应)

好友列表如下图所示

使用qt quick-ListView仿微信好友列表和聊天列表的示例代码

聊天列表如下图所示

使用qt quick-ListView仿微信好友列表和聊天列表的示例代码

整个效果如下所示

使用qt quick-ListView仿微信好友列表和聊天列表的示例代码

觉得gif模糊的话,可以转弯去bilibilihttps://www.bilibili.com/video/bv1z64y1r7kl/ 。

由于代码上传csdn,会导致有些同学可能没积分无法下载,所以已经上传群里了. 。

如果下载后学习有收获,一定要来这里给我点个赞呀,都没动力更新文章了,赞的人太少了 。

使用qt quick-ListView仿微信好友列表和聊天列表的示例代码

3.重要组件-实现气泡组件源码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import qtquick 2.0
nhập khẩu "bubblenormal.js" as bubblenormal
nhập khẩu "bubbleblue.js" as bubbleblue
nhập khẩu "bubbleblack.js" as bubbleblack
 
 
item {
     id: container
     property var bubbleindex: 0
     property string msgtext: ""
     tài sản bool issend: ĐÚNG VẬY
     tài sản số nguyên iconheight: 40
     tài sản số nguyên maxwidth: 100
 
     canvas {
         id: canvas
         anchors.fill: parent
 
         onpaint: {
             bubble().drawbubble(getcontext( '2ngày' ));
         }
     }
 
     text {
         id: text
         text: msgtext
         font.pixelsize: 17
         font.family: "microsoft yahei"
         wrapmode: text.wrapanywhere
 
         horizontalalignment:  text.alignleft
         verticalalignment: text.alignvcenter
         anchors.fill: parent
     }
 
     component.oncompleted: {
         bubble().inittext();
         bubble().reupdatesize();
         canvas.requestpaint();
     }
 
     onbubbleindexchanged: {
         bubble().inittext();
         bubble().reupdatesize();
         canvas.requestpaint();
     }
     function bubble() {
         công tắc (bubbleindex) {
             trường hợp 0 :  trở lại bong bóng bình thường
             trường hợp 1 :  trở lại bong bóng xanh
             trường hợp 2 :  trở lại bong bóng đen
             mặc định : trở lại bong bóng bình thường
         }
     }
 
}

Đoạn code như hình trên chỉ cần người dùng thay đổi giá trị bubbleindex, chúng ta sẽ gọi ngay hàm() của file bubble js tương ứng sau khi thay thế để khởi tạo thông báo và vẽ lại nền bong bóng. Sau khi thành phần này được triển khai, nếu muốn triển khai các bong bóng khác, chúng ta chỉ cần thêm chúng trực tiếp.

4. Thành phần quan trọng -triển khai mã nguồn ủy quyền danh sách trò chuyện.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*************************************************** ****************************
** Ủy quyền danh sách trò chuyện
** tác giả: Nuo Qian https://www.cnblogs.com/lifexy/
** tạo : 2021-6-12
**************************************************** **************************/
 
nhập qtquick 2.12
nhập qtgraphicaleffects 1.12
nhập khẩu "./bong bóng" như bong bóng
nhập khẩu "qrc:/common.js" như phổ biến
 
item {
     id: container
     tài sản là headrc
     tài sản là myheadsrc : "qrc:/head/myhead.jpg"
     thuộc tính var bubbleindex : 0
 
     chiều cao: _layout.height + 10
     chiều rộng: listview.view.width
     trạng thái: msgtype
     các tiểu bang: [
         tình trạng {
               tên: "gợi ý"
               anchorchanges { mục tiêu: _layout;
                   neo.horizontalcenter: container.horizontalcenter;
                   neo.verticalcenter: container.verticalcenter; }
         },
         tình trạng {
               tên: "ngày gợi ý"
               anchorchanges { mục tiêu: _layout;
                   neo.horizontalcenter: container.horizontalcenter;
                   neo.verticalcenter: container.verticalcenter; }
         },
         tình trạng {
               tên: "nhận"
               anchorchanges { mục tiêu: _layout;
                   neo.left: container.left;
                   neo.verticalcenter: container.verticalcenter; }
         },
         tình trạng {
               tên: "gửi"
               anchorchanges { mục tiêu: _layout;
                   neo.phải: container.phải;
                   neo.verticalcenter: container.verticalcenter; }
         }
     ]
 
     hàng ngang {
         id: _bố cục
         neo.leftmargin: 20
         neo.rightmargin: 20
         khoảng cách: 4
         layoutdirection : msgtype == "gửi" ? qt.phải sang trái : qt.trái sang phải
         hình ảnh đầu {
             id: _đầu
             chiều rộng : 50
             chiều cao : 50
             headurl: msgtype == "nhận" ? headsrc : myheadrc
             có thể nhìn thấy: msgtype == "nhận" || Kiểu tin nhắn == "gửi"
         }
 
         text {
             id: _gợi ý
             có thể nhìn thấy: msgtype == "ngày gợi ý" || Kiểu tin nhắn == "gợi ý"
             văn bản: msgtype == "ngày gợi ý" ? getchatdate() : tin nhắn
             màu sắc: "#b0b0b0"
             font.pixelsize: 14
             font.family: "microsoft yahei"
             wrapmode: text.wrapanywhere
             elide: văn bản.elideright
             chiều rộng: container.width - 40
             chiều cao: 30
             căn chỉnh ngang: text.alignhcenter
             verticalalignment: text.alignvcenter
         }
 
         bong bóng.chatbubble {
             id: _msg
             có thể nhìn thấy: msgtype == "nhận" || Kiểu tin nhắn == "gửi"
             văn bản tin nhắn: kiểu tin nhắn == "nhận" || Kiểu tin nhắn == "gửi" ? tin nhắn : ""
             đang ăn: msgtype == "gửi" ? ĐÚNG VẬY : SAI
             chiều cao biểu tượng: _head. chiều cao
             maxwidth: container.width - _layout.anchors.leftmargin * 2 - _head.width * 2 - _layout.spacing * 2
             chỉ mục bong bóng: container.bubbleindex
         }
     }
 
 
     // Xác định thời gian của tin nhắn và khoảng cách giữa thời gian hiện tại và hiển thị nó một cách linh hoạt
     hàm getchatdate () {
         tổng cộng = mới date() - ngày tháng;
         nếu như (tổng cộng < (1000*60*60*24)) {
             trở lại date.tolocaletimestring(qt.locale(), "hh:mm" );
         } khác nếu như (tổng cộng < (1000*60*60*24) * 2) {
             trở lại "Hôm qua" +date.tolocaletimestring(qt.locale(), "hh:mm" );
         } khác nếu như (tổng cộng < (1000*60*60*24) * 3) {
             trở lại "ngày hôm kia" +date.tolocaletimestring(qt.locale(), "hh:mm" );
         } khác {
             trở lại ngày.tolocalestring(qt.locale(), "yyyy năm m tháng d ngày hh:mm" );
         }
     }
}

Code như hình trên, chúng ta sẽ xác định loại thông báo:

  • Nếu loại thông báo là "gợi ý" thì nó sẽ hiển thị trực tiếp ở giữa.
  • Nếu loại tin nhắn là "hintdate", hãy gọi getchatdate() để tự động biết cách hiển thị thời gian.
  • Nếu loại tin nhắn là "recv", hình đại diện của bên kia sẽ hiển thị ở bên trái và tin nhắn bong bóng sẽ được thêm vào.
  • Nếu loại tin nhắn là "gửi" thì hãy hiển thị hình đại diện của chính bạn và thêm tin nhắn bong bóng

Trên đây là thông tin chi tiết về danh sách bạn bè và danh sách trò chuyện WeChat giả mạo cao qt. Để biết thêm thông tin về danh sách bạn bè và danh sách trò chuyện qt WeChat, vui lòng theo dõi các bài viết liên quan khác của tôi! .

Liên kết gốc: https://www.cnblogs.com/lifexy/p/14878664.html.

Cuối cùng, bài viết này về cách sử dụng qt quick-ListView để bắt chước mã mẫu danh sách bạn bè và danh sách trò chuyện WeChat ở đây. Nếu bạn muốn biết thêm về cách sử dụng qt quick-ListView để bắt chước mã mẫu danh sách bạn bè và danh sách trò chuyện WeChat. vui lòng tìm kiếm các bài viết của CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .

27 4 0
qq735679552
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress