在前期总结中,我写了多个类控制一个ui界面,事实无须如此。可以把你想要让ui界面下的某个部分让某个类去做,只需要将ui->widget传进该类的构造函数中即可,然后就可以在这个ui部分上为所欲为了。
示例 /播放控制界面/
pcWidget = new PlayControlWidget(ui->playControl);//这个自定义类,用于播放控制栏界面设计上为所欲为了
   playcontrolwidget.h中的PlayControlWidget类内定义一个变量QWidget *widget, 用来接构造函数中的窗口指针ui->playControl(这也是一个QWidget窗口),所以如果你想要把某个控件成为该窗口的子窗口,只需把平常经常写的this改成你定义的变量widget即可。
    这是上次写博客遗留下来的问题,现在写一下歌词的显示问题。之前没有怎么接触歌词文件。打开qq音乐的lyric文件夹发现qq音乐的歌词大多是qrc文件结尾,sublime打开也是一堆乱码,应该是腾讯自己的编码格式,反正也弄不懂(这里吐槽一下电脑上的腾讯视频,qsv文件连自己的手机腾讯视频都不支持,还没有优酷的转码功能)。所以迫于无奈用了lrc的歌词文件。开始想想网上有没有类似的三方库,后来想想这么简单的功能自己做算了,主要就是正则表达式抓取时间和歌词,然后一个QTimer类就解决了
  源码:
lyric.h

#ifndef LYRIC_H
#define LYRIC_H#include <QWidget>enum LyricStatus
{NODIR = 0,NOFILE = 1,FILEOPENERROR = 2,FileEXIST = 3,
};class QDir;
class Lyric : public QWidget
{Q_OBJECT
public:explicit Lyric(QWidget *parent = 0);int findLrc(QString filename);void dealLrc();QList <int> getTime();QStringList getLyric();int getStatus();signals:public slots:private:QString lyricFileDirName;QDir *lyricFileDir;int status;QStringList lyricAddress;QStringList bufferList;QList <int> timeList;QStringList lyricList;
}
#endif // LYRIC_H
lyric.cpp
#include "lyric.h"
#include <QDir>
#include <QFileInfoList>
#include <QTextStream>
#include <QRegExp>
#include <QDebug>Lyric::Lyric(QWidget *parent)
{lyricFileDirName = tr("D:/suqian/c++projects/Music/lyric");lyricFileDir = new QDir(lyricFileDirName);QStringList filters;filters << "*.lrc";lyricFileDir->setNameFilters(filters);if(lyricFileDir->exists() == false){status = LyricStatus::NODIR;return;}QFileInfoList songLyricList = lyricFileDir->entryInfoList();for(int i = 0; i < songLyricList.count(); i++){lyricAddress.append(songLyricList[i].absoluteFilePath());}
}int Lyric::getStatus()
{return status;
}int Lyric::findLrc(QString filename)
{int j;QFile file;timeList.clear();lyricList.clear();bufferList.clear();status = -1;//qDebug() << "filename:" << filename;for(j = 0; j < lyricAddress.count(); j++){//qDebug() << "lyricAddress:" << lyricAddress[i];QFileInfo info(lyricAddress[j]);if(info.exists() == false){continue;}//qDebug() << "info.baseName():" << info.baseName();if(info.baseName() == filename){file.setFileName(lyricAddress[j]);break;}}if(j < lyricAddress.count()){if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){status = LyricStatus::FILEOPENERROR;return status;}status = LyricStatus::FileEXIST;QTextStream in(&file);while(!in.atEnd()){bufferList.append(in.readLine());}}else{status = LyricStatus::NOFILE;return status;}return status;
}void Lyric::dealLrc()
{if(status == LyricStatus::FileEXIST){QRegExp rx("^[\\[](.*)[]](.*)");rx.indexIn(bufferList[0]);QString title = rx.cap(1).section(":", 1, 1);rx.indexIn(bufferList[1]);QString author =rx.cap(1).section(":", 1, 1);rx.indexIn(bufferList[2]);QString album = rx.cap(1).section(":", 1, 1);rx.indexIn(bufferList[3]);QString madeBy = rx.cap(1).section(":", 1, 1);rx.indexIn(bufferList[4]);QString offset = rx.cap(1).section(":", 1, 1);for(int i = 5; i < bufferList.count(); i++){rx.indexIn(bufferList[i]);timeList.append(rx.cap(1).section(QRegExp("[:.]"), 0, 0).toInt()*60*1000+ rx.cap(1).section(QRegExp("[:.]"), 1, 1).toInt()*1000+ rx.cap(1).section(QRegExp("[:.]"), 2, 2).toInt());lyricList.append(rx.cap(2));}}
}QList <int> Lyric::getTime()
{return timeList;
}QStringList Lyric::getLyric()
{return lyricList;
}

音乐播放器中期总结(类似于qq音乐的歌词显示)相关推荐

  1. 一个开源音乐播放器,低仿QQ音乐!

    有暇,弄了个音乐播放器,页面效果整体上参考了QQ音乐,相关API使用了易源数据提供的相关接口(https://www.showapi.com/api/lookPoint/213),在此表示感谢.先来看 ...

  2. html音乐播放器代码自动,html5 css3音乐播放器代码

    特效描述:html5 css3 音乐播放器代码.html5 css3音乐播放器代码 代码结构 1. 引入CSS 2. 引入JS 3. HTML代码 标题歌手 00:00/00:00 var music ...

  3. 如何在php中添加音乐播放器,window_Win10自带Groove音乐播放器怎么使用?,《Groove音乐》是微软在Win10系 - phpStudy...

    Win10自带Groove音乐播放器怎么使用? <Groove音乐>是微软在Win10系统上推出的一款最新的音乐播放器,从而替代了之前的Xbox Music.而今天<Groove音乐 ...

  4. python实现在线音乐播放器(懒皮鼠音乐)

    python实现在线音乐播放器(懒皮鼠音乐) 利用qt设计requests库实现在线音乐播放 文章目录 python实现在线音乐播放器(懒皮鼠音乐) 前言 一.qt设计师设计界面 二.使用步骤 1.引 ...

  5. Android音乐播放器eclipse,简单的Android音乐播放器 eclipse开发的基于Android平台的音乐播放器 - 下载 - 搜珍网...

    压缩包 : 音乐播放器.zip 列表 音乐播放器/ 音乐播放器/.classpath 音乐播放器/.project 音乐播放器/.settings/ 音乐播放器/.settings/org.eclip ...

  6. html音乐播放器自动切歌,HTML音乐播放——切歌

    $(function(){ $("#next").click(next); }); // 使用JQuery选择标签,则切歌后两首歌一起播放,用JS挺好 var eBar = doc ...

  7. android苹果音乐播放器,GitHub - macproz/HappyMusicPlayer: android音乐播放器

    ====================== 2015-03-11 ===================== 1.完成了基本的页面 ====================== 2015-03-1 ...

  8. ehshig蒙文歌曲_额格希格音乐播放器_额格希格音乐播放器安卓版下载_额格希格音乐播放器最新版app下载_好趣手游网...

    额格希格蒙语版是一款颇具民族特色的蒙文歌曲下载软件.额格希格音乐播放器收集了最全的蒙文歌曲曲库,各种经典的蒙文歌曲以及当前流行的蒙文流行歌全都有,深受广大内蒙用户喜爱! 软件介绍 想了解蒙语音乐或者想 ...

  9. android 音乐播放器 获取sd卡所有音乐文件,Android Studio音乐播放器无法读取SD卡,只有内部存储器...

    我很抱歉,如果这原来是一个愚蠢的问题,它可能会成为一个快速修复,但我只是无法弄清楚.我在android studio中创建了音乐播放器,并且没有任何sdcard上的歌曲不会显示在列表视图中,只有内部内 ...

最新文章

  1. video标签支持获取rtsp流么_Flask教程(二十二)在浏览器中播放rtsp实时流
  2. hibernate 中set的3个属性(inverse,cascade,order_by)
  3. C# 程序打包成安装项目
  4. UA OPTI570 量子力学17 创生算符与湮灭算符
  5. 1. 赋值运算符函数
  6. 我更喜欢用 Intellij IDEA 部署应用
  7. eclipse(或者myeclipse)常用配置方法
  8. 什么是485转光纤?485光纤转换器功能特点及技术参数详解
  9. Oracle内存管理(五)
  10. FPGA-Verilog实例----线性反馈移位寄存器(LFSR)
  11. map字符串转json格式
  12. 使用微信即时扫码开门
  13. crontab布置定时任务
  14. 人教版五年级下册计算机试题答案,人教版五年级下册语文试卷
  15. 三星手机如何通过Exchange账户同步联系人到手机中?
  16. 【JY】橡胶支座的简述和其力学性能计算
  17. 利用matlab构建自己的colormap(色彩搭配)
  18. 前端处理订单支付超时
  19. JS实现图片大小自适应且位置居中,防止图片变形
  20. 设置杀怪KillMonBurstRate爆率、KillMonExpRate经验倍数

热门文章

  1. python玫瑰花数量的含义_玫瑰花的数量代表的意义
  2. GF( p^n) 伽罗瓦域
  3. 如何让电脑上的小键盘不自动锁死
  4. 理工科er怎么发一作SCI
  5. python获取windows当前的输入法是中文还是英文
  6. MongoDB的Morphia框架
  7. [BZOJ]1003 物流运输题解
  8. layui laydate 渲染失效问题,lay-key导致动态生成代码二次渲染失败
  9. 中公教育 java讲师_【java讲师职责】中公教育集团2021年java讲师工作内容-看准网...
  10. java同步与死锁_Java入门——同步与死锁