qt label显示图片_QT制作音乐播放器(再续)

#千锋你逆战班,qt#

******************假如我不能,我一定要;假如我一定要,我就一定能*******************

上一篇文章说到了如何给按钮和label添加图片,今天就来说一下在slave模式下如何获得歌曲的一些信息和如何创建线程

一、获得歌曲信息

先介绍Mplayer 在slave模式下常用的命令:

loadfile string //播放string指定的歌曲。 string为歌曲路径+文件名(例:“loadfile ../easylove.mp3”)。

volume x 1 //设置音量,x为音量的大小。

mute 1/0 //静音开关。1:静音;0:取消静音。

pause //暂停/取消暂停。

seek value //快进或快递参数value指定的秒数

当value为正时,快进;当value为负时,快退。

get_percent_pos //获得文件的播放进度(百分比:0--100)。

get_time_pos //获得文件的当前位置,以秒为单位,精确到小数位1位。

get_file_name //获得文件的文件名。

get_time_length //获得文件的长度,以秒为单位。

get_meta_album //获得文件的 '专辑' 的元数据。

get_meta_artist //获得文件的 '艺术家' 的元数据。

get_meta_comment //获得文件的 '评论' 的元数据。

get_meta_genre //获得文件的 '流派' 的元数据。

get_meta_title //获得文件的 '标题' 的元数据。

get_meta_year //获得文件的 '年份' 的元数据。

在编码过程中,我们应该创建无名管道(pipe)和有名管道(mkfifo),便于后面进行读写使用,创建方法如下:

da253840ad137da092948088813b7c22.png

在获得歌曲的播放当前时间和总时长时,我们先打开有名管道,向管道里写命令,在无名管道端读数据,向管道写数据时,我们最好先定义一把锁,用于互斥:pthread_mutex_t mutex;

例如:向管道写volume命令,改变音量

c9de370423675516d22e92e72d371cc6.png

在QT中,如果直接在主窗口下进行读写,程序会发生错误,为了避免发生错误,我们应该创建线程,在线程中读写,再把读到的数据发送给主窗口,再由主窗口对一些控件进行设置

( 我们需将标准输出重定义到无名管道的读端

ea40c1c83519b85147b209d47d7979ab.png

)

线程如何创建,就由读者自己搜索了

案例:点到项目右击 -> 添加新文件 -> c++ -> c++ class ->"class name :自己取名",“base class <custom>:自定义”-> 继承:QThread -> 下一步完成

.h

5ded3e98bcf2f73b7bdd5fee7f398af0.png

.cpp 在线程中读写,获取歌曲播放的当前时间,这里建议用一个线程写,另一个线程读

750ec87b7336746a3c65a7f449df8ff2.png

主窗口.cpp 启动线程,注册信号与槽

b9b7c21cd0bf40051b197c72738c4c89.png

c69388fe2f65f004fe96b115241e1653.png

设置label,显示当前时间

2cd2a5cd92bc79a731da39674ebbdb3d.png

获得总时间,播放进度,类似

今天就分享到这了,欢迎留言讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值