计网课设 基于网络上开源项目的修改与完善
基于QT框架开发,C++项目,采用QT内置的数据库和网络编程功能
基于原作做出以下修改:
1.托盘图标的闪动
在设计托盘图标的过程中,要控制其闪动的时间,当有多个好友发来消息时,如果只打开了一个好友的对话框,那么托盘图标应该继续闪动,这样就要统计当前未读消息好友个数。而这个数量在主界面程序中要能访问到,在单个好友按钮程序中也应该能访问到。所以就要用到全局变量。为了保护程序的封装性,可以单独建立一个全局变量用的静态类,通过访问该类内变量来实现全局变量的功能。
2.无边框处理
为了让程序的图形界面更美观,我决定将程序原本的边框都去掉,实行无边框化的设计。在QT工程中实现了无边框之后,会出现窗口不能移动且固定在屏幕中央的现象,在这个时候解决办法就是可以在程序中加入鼠标监控事件,写好代码后窗口就能进行移动了。
关于原作相关BUG的修复:
1.用户上下线
在调试的过程中,我们还需要能及时反应用户的状态,以便在好友列表中显示。用户在上线后,服务器在确认该用户登陆成功的同时也会向当前所有在线的该用户好友发送其状态改变的消息。在处理用户下线时曾经遇到一个问题,如果用TCP/IP的连接成功与否来判断用户状态,在多个客户端同时工作时会出现问题,所以考虑在用户下线时给服务器发送下线消息,以便更改其状态。但是在做出更改后又遇到了问题,客户端关闭时会导致下线消息还没有被服务器完全接收就断开了连接,这样服务器也没有收到客户端发来的下线请求,无法作出响应。解决办法是在用户下线时,下线请求发出到客户端完全关闭期间对线程进行休眠1S,可以用计时器完成,这样可以保证用户正确下线。(休眠的时间可以缩短以提高用户体验)
简单PO几张程序的效果图
-
Notifications
You must be signed in to change notification settings - Fork 0
linvon/QQ
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
计网课设 基于网络上开源项目的修改与完善
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published