QQ背景层界面,最复杂的要数Flash播放了。

Qt自带有播放Flash的插件:QAxWidget,正常播放flash没有问题,当被响应层覆盖后,不刷新,会变成黑色。如下:

目前使用定时器播放图片模拟动画[PseudoFlashWidget],效果如下[每组40张照片,目前播放过快或有卡顿,可通过改变图片序列和定时器时间间隔来改进], 该方法不成熟,顾目前未加到资源文件中,通过目录读取,效果:

因此,之前的类图变更为:

期待Qt正统的Flash播放方法,现附上这两个类的实现:

FlashWidget:

#include "flashwidget.h"
#include <QPainter>
#include <QLabel>
#include <QMovie>
FlashWidget::FlashWidget(QString flashPath, QWidget *parent) :
BackgroundWidget(parent)
{
if(parent)
this->setFixedSize(parent->size());
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
flash = new QAxWidget(parent);
flash->setFixedSize(this->size());
flash->show();
flash->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));
flash->dynamicCall("LoadMovie(long,string)",0, flashPath);
//    flash->dynamicCall("WMode", "transparent");
timer = new QTimer;
connect(timer, &QTimer::timeout, this, &FlashWidget::update);
timer->start(1000);
}
void FlashWidget::update()
{
flash->update();
}
void FlashWidget::paintEvent(QPaintEvent *)
{
}

PseudoFlashWidget:

#include "pseudoflashwidget.h"
#include <Qpainter>
#include <QDir>
#include <iostream>
using namespace std;
PseudoFlashWidget::PseudoFlashWidget(const QString &dirPath, QWidget *parent) :
BackgroundWidget(parent)
{
QDir dir(dirPath);
if(!dir.exists())
{
cout << dirPath.toStdString() << " not exist."<<endl;
}
dir.setFilter(QDir::Files);
dir.setSorting(QDir::Name);
QFileInfoList list = dir.entryInfoList();
for (int i = 0; i < list.size(); ++i) {
QFileInfo fileInfo = list.at(i);
//cout << fileInfo.filePath().toStdString()<<endl;
pixmaps.push_back(QPixmap(fileInfo.filePath()));
}
if(parent)
this->setFixedSize(parent->size());
else
{
if(pixmaps.size() > 0)
this->setFixedSize(pixmaps[0].size());
}
texturePixmap = QPixmap(":/background/texture").copy(10, 5, 25, this->height());
index = 0;
timer = new QTimer();
connect(timer, &QTimer::timeout, this,  &PseudoFlashWidget::setNext);
timer->start(200);
}
void PseudoFlashWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawPixmap(this->rect(), pixmaps[index]);
painter.drawPixmap(this->rect(), texturePixmap);
}
void PseudoFlashWidget::setNext()
{
index++;
if(index >= pixmaps.size())
index = 0;
this->update();
}

Qt Flash 播放相关推荐

  1. linux qt语音播放库,QT语音如何上传视频?QT语音上传视频的方法

    你们知道QT语音如何上传视频吗?不少小伙伴刚接触,并不知道该怎么上传视频,所以下面就和小编一起来看看QT语音上传视频的方法吧. 如何打开视频应用: 所有房间自动加载视频应用,无需申请开通. 进入房间主 ...

  2. python爬取资料_Python爬取FLASH播放器中的资料

    Python爬取FLASH播放器中的资料. 一.首先了解一下AMF协议:AMF(Action Message Format)是Flash与服务端通信的一种常见的二进制编码模式,其传输效率高,可以在HT ...

  3. Adobe Flash Player(Flash播放器)下载地址

    Adobe Flash Player 是一个跨平台.基于浏览器的应用程序运行时,它可以跨浏览器和操作系统.原汁原味地呈现具有表现力的应用程序.内容和视频. Adobe Flash Player(Fla ...

  4. Flash播放控件属性详解

    Flash 播放控件属性详解 一.属性篇 1.AlignMode(读写)  语法:AlignMode As Long  说明:对齐方式(与SAlign 属性联动).当控件的长宽比例与影片不一致且WMo ...

  5. 网页中Flash播放器常用参数设置(转)

    网页中Flash播放器常用参数设置 2006-11-26 23:24 我们现在大部分人做网页,都是直接用DW插入flash,而且DW也是所见即所得,直接生成了相应的flash显示代码.可是我们又有多少 ...

  6. wince flash Android,关于wince下用C#实现flash播放器

    我的开发是基于 6410 ARMV4I 的一个触摸屏设备 在windows下,用vc#只要引用AxInterop.ShockwaveFlashObjects.dll和Interop.Shockwave ...

  7. 解密flash播放器

    转载自公众号:python_shequ 今天在摸鱼(划掉)逛V2EX的时候,有个帖子引起了我的注意 求助一个网站视频加密方式, 已排除是 base64 加密 - V2EX https://www.v2 ...

  8. HTML嵌套Flash播放视频

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1. 视 ...

  9. Android简易Flash播放器

    上一节,大体说了下在Android程序中嵌套Flash动画.这次按照上次的内容做个扩展,做个简易的flash播放器. 前提条件如上一节所说,需要Android2.2平台和安装flash的插件. 先看工 ...

  10. Android 9.0 flash播放器播放swf源码讲解

    其实不是什么新技术,因为android4.1之后的android 浏览器内核版本发生了变化导致 Adobe 的Flash插件无法正常运行,大家的Flash无法正常播放.而网络上所能搜索到的方法全是We ...

最新文章

  1. xtrabackup增量备份mysql +MHA
  2. 静态资源Css基础语法
  3. servlet 3.0异步_Servlet 3.0异步处理可将服务器吞吐量提高十倍
  4. uva 10716 Evil Straw Warts Live
  5. 如何避免ajax重复请求?
  6. 帮你快速拿Offer!渣本逆袭大厂面经分享
  7. python学习day05
  8. 如何在基于 Intel 的 Mac 上使用机构恢复密钥?
  9. 李炎恢老师的php源码以及附带一个php手册
  10. OrCAD 基本操作笔记
  11. Go语言自学系列 | go常用命令
  12. Python自学的好方法
  13. OS课程 ucore_lab1实验报告
  14. 【二分图匹配】矩阵游戏
  15. ElasticSearch简单使用
  16. 编写第一个JavaFX界面
  17. 正在进行 | 用友企业数智化财务峰会落地广州 高能不断
  18. uCLinux简介--
  19. 女友抵连!接站等待中。
  20. simulink中MUX

热门文章

  1. sl4a+android截屏,使用SL4A Python在android桌面上显示数据(示例)
  2. 计算机三级路由器配置例题,计算机三级网络技术(7):路由器配置及使用(上)...
  3. 【迅为6818开发板资料】安卓7.1 系统编译手册
  4. win10计算机睡眠怎么设置密码,怎么取消win10睡眠模式唤醒密码 Win10睡眠模式怎么设置取消唤醒密码...
  5. html在excel中查询,excel通配符查找 excel任意字母的通配符
  6. win7怎么修改计算机皮肤,鼠标指针怎么换?小编教你win7系统更换鼠标指针皮肤的方法...
  7. 申请 iOS开发者计划 (IOS Developer Program IDP)
  8. Python书写格式
  9. 第一章--多媒体技术概述
  10. 微服务部署之蓝绿发布、滚动发布、灰度发布区别与特点