众所周知 Mplayer 播放有 -wid + 窗口句柄 的指令,可以让Mplayer嵌入指定窗口播放。

因此只有利用该指令就可以让Mplayer在Qt指定的窗口或控件播放视频,

实现平台 Ubuntu 16.04

QWidget 实现方法:

QWidget可以很简单的获取控件的wid ,因此只需要直接执行命令就可以实现嵌入

void MainWindow::on_pushButton_clicked()
{qDebug() << "on touch..." ;play = new QProcess;QString order = QString("mplayer -quiet  -slave -x 600 -y 300 -wid %1 %2").arg(/*this->winId()*/ui->label->winId()).arg(ui->label_2->text());qDebug() << order ;play->start(order);
}

只需要小小的简单的办法就可以实现Mplayer播放器的嵌入了

效果

QML 实现方法:

QML 无法简单的获取窗口句柄,因此需要一些小小的办法,

WId *getQmlWid(QObject *QmlObj)
{WId *parent_HWND = new WId;QWindow *QmlWindow=qobject_cast<QWindow *>(QmlObj);//获取qml的窗口*parent_HWND = QmlWindow->winId();qDebug() << "id Get" <<QmlWindow->winId() ;return parent_HWND;
}

通过上述函数可以获取QML窗口的WID,接着只需要

void playerTest::mplayerPlay()
{play = new QProcess;QString order = QString("mplayer -quiet -slave -x 600 -y 300 -wid %1 test.mp4").arg(*this->parent_HWND);qDebug() << order ;play->start(order);
}

照样执行Mplayer播放指令就行了,但是QML 目前我还没能实现获取控件的操作句柄,因此,Mplayer 嵌入QML 是直接嵌入整个窗口,如果在该窗口上显示控件的话,会出现控件和视频画面抢刷新的情况,就是控件闪烁,这可能是和QML和Mplayer本身的原因,要解决的话也不是目前我这个级别的人干的,因此,偷偷鸡,直接弄个透明窗口盖在Mplayer窗口上面就完事了

这样也是没问题的,还能做成点击才显示操作按钮,炫酷程度还是可以的

但是肯定有些人又需要Qwidget那样显示在划定的控件中而不是整个窗口,那样的话就得祭出我的最终方案了,有二,但是播放就懒得做了,就是:

QWidget窗口嵌入QML 窗口,这样就可以直接获取QWidget 窗口里面控件的操作句柄,方法如下

int main(int argc, char *argv[])
{QApplication a(argc, argv);//======================实例化一个QML界面=============================//QQmlApplicationEngine engine;engine.load(QUrl(QStringLiteral("qrc:/MainQml.qml")));if(engine.rootObjects().isEmpty())return -1;MainWindow w;//实例化一个QWidget界面w.winId();//获取winID ,不使用会失败w.setAttribute(Qt::WA_NativeWindow);//将其设置为子窗口//需要调用QWindow文件w.windowHandle()->setParent( qobject_cast<QWindow *>(engine.rootObjects().first())/*父窗口*/);//设置其父窗口//显示w.show();//设置位置w.move(20,30);//w.show();return a.exec();
}

QML MainQml.qml

​
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
//import ABC 1.0
import QtQuick.Dialogs 1.1
import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Layouts 1.1import QtQuick.Window 2.2
import QtQuick.Controls 2.2Window{id:qmlWindowtitle: "WINDOW"width: 1000height: 800visible: trueText {id: nametext: qsTr("THIS IS QML")}}​

Qwidget 我就直接这样了

实现效果如图

还有一种就是QML 嵌入QWidget

直接

就完事了,然后设置需要读取的文件

这个好像是不能贴Window 控件的

Mplayer 嵌入Qt 窗口 制作播放器(嵌入方法)相关推荐

  1. 基于Qt的音乐播放器制作

    基于Qt的音乐播放器制作 使用浏览器自带工具抓包歌曲资源 开发人员工具抓包 点击浏览器右上角的 "-" 快捷键(Alt + F): 点击其中的"更多工具" ➡ ...

  2. 将OSG嵌入QT窗口系统中,实现拖拽界面

    将OSG嵌入QT窗口系统中,实现拖拽界面 一.原理 OSG底层使用的是OpenGL图形系统,QT也增加了对OpenGL的支持,因此,可以通过QT的OpenGL模块,实现将OSG窗口嵌入到QT中,这样可 ...

  3. 基于QT实现Mp3播放器(代码部分)

    前言     最近有一个课程实验,利用window上的API接口实现MP3播放器. 突发奇想,在linux下用相关接口做一个MP3播放器.最先的打算是完全使用纯C写的,但后来感觉编写调试实在费劲.于是 ...

  4. 【QT的音乐播放器(简单版)】

    基于QT的音乐播放器 前言 一.主体效果 二.主要技术点: 1. mp3的ID3V2格式文件解析:作者.歌手.时长.专辑图片等 1.1 需要工具: 1.2 ID3V2文件格式 1.3 mp3ID3V2 ...

  5. C++ QT视频音乐播放器

     程序示例精选 C++/QT视频音乐播放器 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 这篇博客针对<<C++/QT视频音乐播放器>>编写代 ...

  6. QT 离线音乐播放器

    今天刚做完一个简单的智能家居项目,里面包含了一个比较简单的音乐播放器,为了加深一下对这个东西印象,所以把操作流程以及一些用到的类和方法记录一下. 目录 1.UI界面制作 2.加入播放器类 3.播放器初 ...

  7. windows player![转载]C# axWindowsMediaPlayer制作播放器 winform

    windows player![转载]C# axWindowsMediaPlayer制作播放器 日期:2011-08-16 06:31 来源:万卷楼主人王希杰 作者:优崽 windows player ...

  8. 基于QT实现Mp3播放器(理论论述部分)

    前言     最近有一个课程实验,利用window上的API接口实现MP3播放器. 突发奇想,在linux下用相关接口做一个MP3播放器.最先的打算是完全使用纯C写的,但后来感觉编写调试实在费劲.于是 ...

  9. QT mp3音乐播放器实现框架,Qt鼠标事件,网络编程,QSqlite,Json解析,HTTP请求等

    QT mp3音乐播放器实现框架,Qt鼠标事件,网络编程,QSqlite,Json解析,HTTP请求等 框架搭建 UI设计 mp3.h mp3.cpp 隐藏窗口标题 最大化 最小化 关闭 框架搭建 .p ...

最新文章

  1. multisim怎么设置晶体管rbe_Multisim 10在单管共射放大电路中的应用
  2. 超大规模智能模型相关工作总结:编程实现框架、算法模型、微调技术和应用...
  3. 码牛安卓移动互联网高级开发正式课
  4. pythonos模块使用方法_python os模块使用方法
  5. Java 和 Android系统环境变量设置
  6. 【区间DP】摆渡线路(2017 特长生 T4)
  7. linux网络编程:使用多进程实现socket同时收发数据
  8. 在 Delphi 6 中使用 Hashtable
  9. (转贴) ArcIMS初级教程(1)
  10. ssis 派生列_具有多个表达式与多个转换的SSIS派生列
  11. [转]手把手教你搭建Hive Web环境
  12. 一次性搞清楚线上CPU100%,频繁FullGC排查套路
  13. Sigar介绍和配置
  14. 银行数据仓库体系实践_【实战剖析】某国际性商业银行的数据仓库建设经验分享...
  15. 2003-2021年高铁列车信息
  16. Kaggle数据集之电信客户流失数据分析(三)之决策树分类
  17. 文件下载(解决中文文件名下载乱码问题)(二)
  18. 量化交易存在哪些缺陷?
  19. 南师大计算机专业导师,南京师范大学硕士生导师名单
  20. OpenGLES(七)使用GLSL实现滤镜效果之动态滤镜

热门文章

  1. Cisco PT模拟实验(10) 路由器的基本配置
  2. 大学在JAVA方向与大数据方向之间如何选择?
  3. Atlas800-9000 开发环境搭建
  4. 计组期末复习题(1)
  5. Yeelight智能家庭照明系统,要革传统灯具的命!
  6. 什么是内网、公网和NAT?读懂这一篇就够!
  7. 送您一个国产达梦数据库安装部署教程
  8. DEBUG:pth文件下载速度慢
  9. linux查看漏洞修复情况,linux 漏洞扫描补丁修复
  10. 如何在CodeIgniter中压缩和解压缩文件