简述

在走上Qt之路后,对QQ的界面便情有独钟,由衷感叹:

一个字——美
两个字——很美
三个字——非常美
四个字——真TM美

说实在QQ的界面做的很精、致,毕竟积累了十几年的功力。但是也有不足的地方,任何事物都不是十全十美的,最重要的是要做的尽善尽美。好了话不多说,代码走起。

代码之路

这次主要是对QQ聊天窗口的表情框的简单实现,下篇中将进一步展开。

先看看QQ的小表情框:

当我们将鼠标慢慢放在这个表情按钮上时会弹出小表情窗口,这个小窗口中的表情是最近所使用过的表情,下面我们就来讲一讲怎么实现这个表情框。
这里我们只需要用到QTableWidget控件即可,新建一个带UI的类(我这里用的VS,QtCreator同理),也可以新建一个不带UI的类,这里为了叙述方便就直接用QtDesigner了。

拖动一个QTableWidget控件到界面,设置界面和QTableWidget的宽高为136。然后对QTableWidget进行如下设置为下图右。效果为下图左。一个表情框搭建完毕,开始加载表情。

//添加表情
void MyEmotionWidget::addEmotionItem(QString fileName)
{// 获取当前添加到第几行第几列int row = m_emotionList.size() / ui.tableWidget->rowCount();int column = m_emotionList.size() % ui.tableWidget->rowCount();QTableWidgetItem* tableWidgetItem = new QTableWidgetItem;ui.tableWidget->setItem(row, column, tableWidgetItem);// 因为表情大部分为gif图片格式,所以这里用QMovie来显示QLabel* emotionIcon = new QLabel;emotionIcon->setMargin(4);QMovie* movie = new QMovie;movie->setScaledSize(QSize(24, 24));movie->setFileName(fileName);movie->start();emotionIcon->setMovie(movie);ui.tableWidget->setCellWidget(row, column, emotionIcon);m_emotionList.push_back(fileName);
}
//初始化表情
void MyEmotionWidget::initEmotion()
{this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);ui.tableWidget->setFocusPolicy(Qt::NoFocus);QString path = "Resources/emotion/%1.gif";for (int i = 0; i < 16; i++){addEmotionItem(path.arg(i + 1));}
}

几行代码轻松解决,附上效果图:

上图中所有的表情都是动态在显示,而我们要的效果则是鼠标悬浮在某个表情上,那个表情才动态显示,见下图,这个问题将在下一篇来讲解如何来解决。

可以下载QQ系统表情包进行试验哦!!!

QQ表情包下载

Qt 之 QQ系统表情(一)相关推荐

  1. Vc++ - qt -仿照微信项目- 表情窗口设计

    分享的力量是无穷的,在csdn上搜索关于表情窗口的设计,偶然发现之前有人做过关于表情这方面的工作,博主:前行中的小猪,相关系列文章 <<QQ之系统表情>>,这里提供<&l ...

  2. Qt工作笔记-Qt元对象系统解析【2合1】

    博文转载地址: https://blog.csdn.net/spwper/article/details/51332187 说Qt信号与槽是一个很好机制,不如说Qt的元对象系统很强大.这也是大家讲Qt ...

  3. Qt模仿QQ聊天窗口界面(二)

    Qt模仿QQ聊天窗口界面(二) Qt模仿QQ聊天窗口界面(二) 简述 修改 效果图 后期规划 代码 结尾 简述 在上篇我们已经搭好了QQ聊天窗口的框架,这里在原来的基础上叠加功能,以及优化一些控件. ...

  4. 【原创】QT在嵌入式系统中显示中文的方法

    [原创]QT在嵌入式系统中显示中文的方法 此篇文章主要借鉴:http://zzqh007.blog.163.com/blog/static/44434847201011312168296/ 移植QT4 ...

  5. QT实现太阳系系统八大行星

    QT实现太阳系系统八大行星 项目简介 项目技术 项目展示 主要源码片段解析 获取完整项目源码传送门 项目简介 演示结合了Qt 3D渲染和Qt Quick 2元素. Planets演示了如何实现将Qt ...

  6. 怎么制作gif动态图 QQ动态表情包怎么制作

    在平时的聊天中经常会使用到GIF动图,不仅仅可以缓解气氛,还很有趣,那这些动态图是如何制作的呢?没有想象的那么难,今天来看看怎么制作的吧! 1.先准备好素材,要制作什么样的动图,可以是图片也可以是视频 ...

  7. [练习]QQ/微信 表情收藏-测试用例的编写 [简洁思路]

    QQ电脑版添加表情: 微信添加表情: 手机版QQ添加表情: 总结上次经验,这次可以分成几个方向进行测试用例编写: 1. 功能方面 :正常的功能能不能正常使用,图片上限 2. 性能方面 :网络.时间.类 ...

  8. 安卓开发-最简单快速的仿微信聊天实现-附赠微信原生表情,QQ原生表情

    前言:正常实现聊天功能想必大家都使用三方的Sdk比如环信融云集成的,但是聊天记录的保存只能有三天,想增加保存时长就需要花钱,so 我只好自己想办法实现了,这个demo是类似于留言板,并非即时通讯!只实 ...

  9. Qt模仿QQ聊天窗口界面(一)

    Qt模仿QQ聊天窗口界面(一) Qt模仿QQ聊天窗口界面(一) 简述 效果图 QQ的聊天窗口 我做的效果图 代码篇 结尾 简述 最近利用业余时间,模仿QQ做了一个聊天窗口界面,功能还不全,准备分几个部 ...

  10. IM即时通讯项目讲解(一) 实现类似qq微信表情面板无缝切换

    IM即时通讯项目讲解(一)--实现类似qq微信表情面板无缝切换 标签(空格分隔): 开源项目 ###该系列技术课程来源慕课IM实战 带后台的IM即时通讯App 全程MVP手把手打造 #####通过该课 ...

最新文章

  1. [PyQt4]项目开发中遇到的错误与解决办法
  2. UPS不间断电源放电时间计算方法
  3. 160 - 21 Cabeca
  4. bootstrap弹出的模态框水平垂直居中的实现
  5. 好看的个人qq主页-导航页源码
  6. malloc calloc realloc
  7. Struts2+Spring+Hibernate step by step 11 ssh拦截验证用户登录到集成
  8. 买SUV要不要选四驱,有哪些区别?
  9. 创建数据账号只有个别表的权限_只有普通权限账号,如何把远程数据库中该用户的数据表导入到本地数据库?...
  10. java对获取的字节数组进行处理
  11. BZOJ1397 : Ural 1486 Equal squares
  12. 2017国二c语言考试试卷,2017备考计算机二级C语言真题试卷
  13. 罗技鼠标驱动怎么下载?
  14. 定积分证明题例题_一个广义积分不等式证明(送给数学分析同学)
  15. 发票查验、发票识别API
  16. aamp;m大学计算机科学,名校介绍丨美国 德克萨斯AM大学 Texas AM University
  17. android脚本实现自动捉妖,一起来捉妖自动捉妖
  18. jQuery带缩略图轮播效果图片切换带缩略图
  19. 阿里终于杀进5G了!“新基建”赛道谁更胜一筹
  20. suse 15破解root密码

热门文章

  1. java可达性_Java 垃圾回收 - 可达性分析算法
  2. 教师测评系统php,校无忧教师评价系统 v2.6
  3. 单片机学习笔记(五)
  4. 地心一号-基于STM8的超迷你自平衡小车-DIY套件
  5. android常用机制,11.Android 常见面试题——Binder机制
  6. MyQQ:可以在终端里面上的QQ
  7. excel文件服务器未响应,excel打不开文件未响应怎么处理-处理excel无法打开文件未响应的方法 - 河东软件园...
  8. 2016.12.30非线性优化计算方法1
  9. 计算机中函数的括号怎么输,Excel函数中括号的使用
  10. 台式计算机的无线上网卡多少线,台式电脑可以用无线上网卡上网吗