回复: 基于QtWidget的聊天气泡
#16 回 mengkun 的帖子 [nigoole 06-18 11:10]
mengkun:换用新版的 QQ 小表情吧,感觉好看些
(2019-06-18 08:45)
OK!~感谢捧场
#17 [nigoole 06-20 09:19]
技术更新(GIF图像刷新解析)
1、最开始用的QMovie做了个demo,效果差强人意。
2、最后通过几个qt大佬的指点总结,用定时器来完成。
感谢雨田大佬和lgao622的技术指点
具体操作步骤:
1、首先文本(包括表情)数据肯定是用QTextDocument来缓存。
2、判断文本数据是否包含gif图像资源,如果有,用QImageReader将图像文件每帧图像缓存到map映射表中,同时需要注意将每下一帧的延迟累加做成一个时间轴,每个时间点插入当前帧的图像,完事用QMap缓存。
3、列表里面启动一个定时器,间隔10毫秒。
4、遍历item的gif缓存数据,每到一个时间点抓取当前帧的图像,修改textdocumet的resouce资源,然后重新update下列表完成。
代码片段:
图像解析
/**
* @brief BubbleItemInfo::ReadGifPixmaps
* 读取Gif图像文件每帧的图像数据,缓存到队列
* @param strName
*/
void BubbleItemInfo::ReadGifPixmaps(const QString &strName)
{
if (strName.isEmpty()) return;
QImageReader reader;
reader.setFileName(strName);
if (reader.supportsAnimation())
{
QMap pixmaps;
int nCount = reader.imageCount();
int ndelay = 0;
for (int i = 0; i < nCount; i++) {
// 跳到顺序号为i的图像
reader.jumpToImage(i);
// 读取图像
if (reader.canRead())
{
QImage image = reader.read();
&nb ..
#18 [liuchangyin 06-20 09:51]
#19 [305750665 06-20 14:46]
倪总又谦虚了。谈不上指点,就相互交流学习
#20 [fzw003 06-21 08:07]
QFrame 插入QTextEdit【git上面有demo,移库后 以前的帖子都丢了】 QFrame上面爱放什么东西放什么东西。纯widget+QtextEdit,基本上得把QtextEdit功能摸个遍的玩。