用Qt写了一个qq客户端,采用webqq协议,发出来和大家分享一下---大神请无视
首先做以下声明:
本程序基于腾讯公司的webqq协议开发,所有相关版权归腾讯公司所有。此程序只用于技术交流和学习,不得用于其他方面。
---开发者:雨后星辰,转载请注明出处:http://www.cnblogs.com/AfterTheRainOfStars/p/4132920.html,谢谢大家。
此程序使用qml做的界面,c++负责逻辑,名字叫:QQStars。程序理论上来讲支持windows、linux、os x,但是我只测试了windows和linux,其它的可以自测。
现在功能还不完善,本来是准备实现所有webqq功能的,但是腾讯已经不准备再开发和维护旧的webqq了,服务器应该也会在不久的将来关闭了,所以我放弃了继续开发。
但是基本功能是已经都有了的,光挂Q、聊天是没有任何问题的。
本着交流和分享的精神,我准备把源代码发上来,希望能对一些学习Qt的有些帮助。下面先让大家看看界面。

这是登录界面,自己加的窗口阴影,后面闪烁的星星使用了qml的粒子系统

这是自己画的一个软键盘,每次点击都会重新布局按键,可以用它放心的输入密码。

这是设置界面,能设置网络代理。

这是登录过程中的界面,可以点击取消回到待登录页面

登录完成后默认显示的界面

展开好友分组(对隐私信息加了马赛克)

这是群列表,由于webqq不支持群分组,所以都在一起

这是讨论组列表,由于讨论组无头像,所以显示的默认图

这是最近联系人列表

这是托盘菜单的样式

这是好友聊天页

这是群聊天页

这是讨论组聊天页

这是新消息提醒,此界面有待美化,莫怪
源码托管在github,下面附上地址:https://github.com/zccrs/QQStars
用Qt写了一个qq客户端,采用webqq协议,发出来和大家分享一下---大神请无视的更多相关文章
- 在网络7层协议中,如果想使用UDP协议达到TCP协议的效果,可以在哪层做文章?(QQ 为什么采用 UDP 协议,而不采用 TCP 协议实现?)
为了解决这题,可以具体看看下面这个讨论. 解灵运工程师 185 人赞同 某次架构师大会上那个58同城做即时通信的人说:原因是因为当时没有epoll这种可以支持成千上万tcp并发连接的技术,所以他们使用 ...
- QT写的一个小工具:阿里云MQTT连接参数生成器.
一.工具介绍. 最近在研究MQTT协议联网的一些问题,现在主流的物联网平台都支持MQTT协议. 在做阿里云平台连接测试的时候,连接参数的生成没有好用的工具, 所以就自己写了一个. 这个工具主要用于阿里 ...
- winform 客户端采用HTTP协议与服务端通信
本来从来没有仔细研究过Http协议,今天因为公司业务需求,调试了半天,终于现在会Winform用Http协议与服务端通信了,其中常用的有POST和Get方式: 仔细看了人人网和新浪等大部分都是采用GE ...
- Android客户端采用Http 协议Post方式请求与服务端进行数据交互(转)
http://blog.csdn.net/javanian/article/details/8194265
- python 类成员知识点学习的一个坑(初学者,大神请绕行)
先来段小程序class Foo: name = "abc" def __init__(self,age): self.age = age print(Foo.name)Foo.na ...
- 【转】C# client 与java netty 服务端的简单通信,客户端采用Unity
http://blog.csdn.net/wilsonke/article/details/24721057 近日根据官方提供的通信例子自己写了一个关于Unity(C#)和后台通信的类,拿出来和大家分 ...
- QQ 为什么以 UDP 协议为主,以 TCP 协议为辅?
QQ既有UDP也有TCP!不管UDP还是TCP,最终登陆成功之后,QQ都会有一个TCP连接来保持在线状态.这个TCP连接的远程端口一般是80,采用UDP方式登陆的时候,端口是8000. UDP协议是无 ...
- 用Qt写软件系列三:一个简单的系统工具(上)
导言 继上篇<用Qt写软件系列二:QIECookieViewer>之后,有一段时间没有更新博客了.这次要写的是一个简单的系统工具,需求来自一个内部项目.功能其实很简单,就是查看当前当前系统 ...
- 一个关于如何创建类似于QQ客户端聊天窗口的模拟小项目
对于不久之前学习到的一个有关的类似于QQ聊天框的模拟项目,对其中涉及到的知识在这里做一下总结. 首先,你要先创建一个客户端聊天框(取名为:ChatClient,它是你创建的类),这个类继承了Frame ...
随机推荐
- spark[源码]-任务调度源码分析[三]
前言 在上一篇文章中,我主要是讲解了DAG阶段的处理,spark是如何将一个job根据宽窄依赖划分出多个stage的,在最后一步中是将生成的TaskSet提交给了TaskSchedulerInmpl的 ...
- 论文笔记:dropout
Improving neural networks by preventing co-adaptation of feature detectors arXiv preprint arXiv: 120 ...
- c++之旅:继承
继承 继承有关于权限的继承,多继承和虚继承 权限继承 权限继承有公有继承,保护继承和私有继承 公有继承 公有继承可以继承父类的public和protected属性和方法 #include <io ...
- vux在ISO中异常 this.$vux.confirm.show
在按钮事件中调用this.$vux.confirm.show,并且启用按钮的show-loading属性 安卓正常,ios中弹窗无法显示 经过排查,iso中设置按钮的loading后,要用异步setT ...
- 在VS2015中用C++编写可被其它语言调用的动态库DLL
转自:http://blog.csdn.net/songyi160/article/details/50754705 VS2015用C++创建动态库DLL步骤如下: (1)启动VS2015>文件 ...
- Stitching模块中对特征提取的封装解析(以ORB特性为例)
titching模块中对特征提取的封装解析(以ORB特性为例) OpenCV中Stitching模块(图像拼接模块)的拼接过程可以用PipeLine来进行描述,是一个比较复杂的过程.在这个过程 ...
- SVN添加忽略目录
项目:Thinkphp 目录结构: Thinkphp |-- Common |-- Runtime |-- Home 忽略目标: Runtime 文件夹及下面所有文件 首先,需要忽略的目录必须没有加入 ...
- C#的switch case注意
参数可以是 switch 语句中的 参数必须是一个整型或枚举类型,或者是一个 class 类型,其中 class 有一个单一的转换函数将其转换为整型或枚举类型. 所以用string也可以,6666
- uboot下如何查看内存里的数据
答:使用md工具 md.b $address $count (从地址$address处显示$count个字节的数据,b=byte,8位) md.w $address $count (从地址$addre ...
- django中的分页设置
1.在控制台中的展示 from django.core.paginator import Paginator iter = 'abcdefghijklmn' inator = Paginator(it ...