Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2415|回复: 4
打印 上一主题 下一主题

Qt 在Linux下播放flash (swf文件)

[复制链接]

1272

主题

2067

帖子

7958

积分

认证用户组

Rank: 5Rank: 5

积分
7958
跳转到指定楼层
楼主
发表于 2018-4-16 14:01:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
windows下有activex控件
linux下好像没有,用QWebveiw显示


QWebView与flash交互
  1. QWebSettings *websetting = QWebSettings::globalSettings();
  2. websetting->setAttribute(QWebSettings::PluginsEnabled, true);
  3. websetting->setAttribute(QWebSettings::JavaEnabled, true);
  4.     QString str("file:///home/homisunit/flash/AvrDefault.swf");
  5.     QUrl url(str);
  6.     ui->webView->load(url);
  7.     ui->webView->show();
复制代码
用Qt5.5.1,同时有QtWebkit和QtWebEngine,官方预编译包还能支持XP系统
Qt5.6后没有QtWebkit了,官方预编译包也不支持XP系统,需要支持XP,自己编译。
回复

使用道具 举报

1272

主题

2067

帖子

7958

积分

认证用户组

Rank: 5Rank: 5

积分
7958
沙发
 楼主| 发表于 2018-5-15 15:01:02 | 只看该作者
本帖最后由 Qter 于 2018-5-15 16:45 编辑

minGW编译器不支持webenginewidgets模块

Qt webkitwidgets模块和webenginewidgets模块
问题
将Qt开发的程序从Qt5.5或更低的版本迁移到5.6或更高的版本时,会提示webkitwidgets是unknown module。
Project ERROR: Unknown module(s) in QT: webkitwidgets

原因
根据Qt官方的解释(在Qt的帮助文档里也可以看到),在5.6版本以及之后的版本,Qt已经移除了webkitwidgets模块,并用一个新的模块webenginewidgets替代之。
Qt5.5.1是最后一个支持webkitwidgets的版本。

解决
Qt给出了向高版本迁移的文档:Porting from Qt WebKit to Qt WebEngine
在.pro文件中,如果要区分不同的Qt版本,可以这么写:

lessThan(QT_VERSION, 0x050600)
{
QT += webkitwidgets
# do something else
}
greaterThan(QT_VERSION, 0x050500)
{
QT += webenginewidgets
# do something else
}


greaterThan(QT_MAJOR_VERSION, 4)|equals(QT_MAJOR_VERSION,4){  
    greaterThan(QT_MINOR_VERSION, 5)|equals(QT_MINOR_VERSION, 5){   
    message("bla,bla,bla ....")   
    }   
}else{   
    message("pla,pla,pla ....")   
}  
回复 支持 反对

使用道具 举报

1272

主题

2067

帖子

7958

积分

认证用户组

Rank: 5Rank: 5

积分
7958
板凳
 楼主| 发表于 2018-5-15 15:04:00 | 只看该作者
本帖最后由 Qter 于 2018-5-15 15:17 编辑

QWebEngineView 播放flash  基于Qt5.8.0
修改QTWebEngineDemo.pro添加框架依赖
QT       += core gui webenginewidgets

#include <QtWebEngineWidgets>

QWebEngineSettings *defaultSettings = QWebEngineSettings::globalSettings();
//    defaultSettings->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
//    defaultSettings->setAttribute(QWebEngineSettings::ScrollAnimatorEnabled, true);
defaultSettings->setAttribute(QWebEngineSettings::PluginsEnabled, true);
//    defaultSettings->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, true);
QWebEngineView * view = new QWebEngineView();
view->setUrl(QUrl("http://www.firemail.wang:8088/chunhui_resource/preschool/letters/a.swf"));
view->show();

回复 支持 反对

使用道具 举报

1272

主题

2067

帖子

7958

积分

认证用户组

Rank: 5Rank: 5

积分
7958
地板
 楼主| 发表于 2018-5-15 17:19:19 | 只看该作者
MAJOR

    MAJOR表示当前APR的主版本号,它的变化通常意味着APR的巨大的变化,比如体系结构的重新设计,API的重新设计等等,而且这种变化通常会导致APR版本的向前不兼容。
    2、MINOR
    MINOR称之为APR的次版本号,它通常只反映了一些较大的更改,比如APR的API的增加等等,但是这些更改并不影响与旧版本源代码和二进制代码之间的兼容性。
    3、PATCH
    PATCH通常称之为补丁版本,通常情况下如果只是对APR函数的修改而不影响API接口的话都会导致PATCH的变化。目前为止APR的最高版本是1.2.2,最早遵循这种规则的版本号是0.9.0,不过在0.9.0之前,APR还推出了两个版本a8和a9。
回复 支持 反对

使用道具 举报

1272

主题

2067

帖子

7958

积分

认证用户组

Rank: 5Rank: 5

积分
7958
5#
 楼主| 发表于 2018-5-15 17:44:48 | 只看该作者
.pro
  1. equals(QT_MAJOR_VERSION, 5)
  2. lessThan(QT_MINOR_VERSION, 7): QT += webkitwidgets


  3. equals(QT_MAJOR_VERSION, 5)
  4. greaterThan(QT_MINOR_VERSION, 7): QT += webenginewidgets
复制代码
.h
  1. #if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0))
  2. #include <QtWebEngineWidgets>
  3. #else
  4. #include <QWebView>
  5. #include <QWebSettings>
  6. #endif


  7. #if QT_VERSION >= 0x050700
  8.     QWebEngineView * engineView;
  9. #else
  10.     QWebView* webView;
  11.     QWebSettings *websetting;
  12. #endif
复制代码
.cpp
  1. #if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0))
  2. #include <QWebEngineSettings>
  3. #endif



  4. #if QT_VERSION >= 0x050700
  5.     QWebEngineSettings *defaultSettings = QWebEngineSettings::globalSettings();
  6.     defaultSettings->setAttribute(QWebEngineSettings::PluginsEnabled, true);
  7.     engineView= new QWebEngineView(ui->page);
  8.     mainLayout->addWidget(engineView);
  9.     engineView->setUrl(QUrl("http://www.firemail.wang:8088/chunhui_resource/preschool/letters/a.swf"));//
  10.     engineView->show();
  11. #else
  12.     websetting = QWebSettings::globalSettings();
  13.     websetting->setAttribute(QWebSettings::PluginsEnabled, true);
  14. //        websetting->setAttribute(QWebSettings::JavaEnabled, true);
  15.     websetting->setAttribute(QWebSettings::JavascriptEnabled, true);
  16.     websetting->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);//
  17.     websetting->setAttribute(QWebSettings::JavascriptCanOpenWindows, true);
  18.     webView= new QWebView(ui->page);
  19.     mainLayout->addWidget(webView);
  20.     webView->load(QUrl("http://www.baidu.com"));//
  21.     webView->show();
  22. #endif
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-23 08:58 , Processed in 0.059050 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表