已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
- 1 - 嵌入式课程设计报告 嵌入式课程设计报告 在 Linux 下开发音乐播放器 李荣贵 141578 一概述 按课程要求, 在Linux环境下开发了一款简易的音乐播放器软件, 名为“Mini 音乐播放器” ,运用工具如下: 操作系统:虚拟机中安装 xubuntu-14.04.1 IDE:QT Creator 3.0.1 该播放器具有如下功能: 1.从本地导入歌曲到歌曲列表中 2.清空歌曲列表 3.删除歌曲列表中选中的歌曲 4.用进度条显示歌曲播放的进度,并显示时间 5.用“播放/暂停” 、 “停止” 、 “上一曲” 、 “下一曲”四个按钮对歌曲进 行控制 6.用滑动器对歌曲音量进行控制 7.右键会弹出菜单,可以对程序进行相应的控制 二项目展示 1.虚拟机截图 - 2 - 2.项目开发界面 - 3 - 3.软件发行后运行情况 隐藏界面部件后 - 4 - 三程序设计源码分析 接下来展示源代码中的核心代码, 其中包括头文件以及 cpp 文件中的 构造函数,源代码我已经上传到网上,有需要的可以下载,链接: widget.h - #ifndef WIDGET_H #define WIDGET_H #include #include #include namespace Ui class Widget; class Widget : public QWidget Q_OBJECT public: - 5 - explicit Widget(QWidget *parent = 0); Widget(); private slots: void addSongs(); /该槽函数功能是从本地导入音乐文件 void playPause(); /该槽函数是用来响应“播放/暂停”按钮 void playStop(); /该槽函数是用来响应“停止”按钮 void playNext(); /该槽函数是用来响应“下一曲”按钮 void playPrevious(); /该槽函数是用来响应“上一曲”按钮 void posChanged(qint64 pos); /当歌曲播放进度变化时, 该槽函数 响应,功能是让进度条与歌曲播放进度保持一致 void durChanged(qint64 dur); /该槽函数功能是当歌曲总长度改 变(即切歌)时,设置进度条最大值为歌曲长度(以 ms 为单位) void setPos(int pos); /该槽函数功能是当拖动进度条改变进度时, 设置歌曲的播放进度与之保持一致 void clearList(); /清空歌曲列表 void delectSong(); /删除歌曲列表中选中的歌曲 void volumeSilence(); /响应点击音量按钮,进而设置静音/正常 void setVol(int vol); /拖动音量滑动条时,设置歌曲音量与之保持 一致 void hideShow(); /隐藏/显示界面上的部件 void redVolume(); /减小音量 - 6 - void addVolume(); /增大音量 private: Ui:Widget *ui; private: QMediaPlayer* player;/QT 中提供的用来保存源文件的类,该 类提供大量 API 供调用 QMediaPlaylist* playList; /QT 提供的保存播放文件的队列 /以下均为弹出菜单中动作 QAction* action_hideShow; QAction* action_addSongs; QAction* action_playPause; QAction* action_stop; QAction* action_previous; QAction* action_next; QAction* action_addVolume; QAction* action_redVolume; QAction* action_quit; protected: void contextMenuEvent(QContextMenuEvent* ); /该函数为虚函 数,对其进行重写,可实现右键单击界面时弹出菜单 - 7 - ; #endif / WIDGET_H Widget.cpp - #include widget.h #include ui_widget.h #include #include #include #include Widget:Widget(QWidget *parent) : QWidget(parent), ui(new Ui:Widget) ui-setupUi(this); /下面几行作用是插入一张图片到播放器界面作为背景 this-setAutoFillBackground(true); QPalette palette; palette.setBrush(QPalette:Background,QBrush(QPixmap(:/images/inter face.jpg); - 8 - this-setPalette(palette); ui-volumeSlider-setRange(0,100); this-setWindowTitle(tr(mini 音乐播放器); this-playList=new QMediaPlaylist(this); this-player=new QMediaPlayer(this); player-setPlaylist(playList);/将 player 与 playList 连接 player-setVolume(50); ui-volumeSlider-setValue(50); /以下几行设置按钮的属性 ui-addSongsButton-setStyleSheet(QPushButtonborder-radius:5px;bo rder-width:0px;); ui-clearButton-setStyleSheet(QPushButtonborder-radius:5px;border- width:0px;); ui-delectButton-setStyleSheet(QPushButtonborder-radius:5px;borde r-width:0px;); ui-volumeButton-setStyleSheet(QToolButtonborder-radius:5px;bord er-width:0px;); /信号与槽的连接 QObject:connect(ui-volumeSlider,SIGNAL(valueChanged(int),this,SL - 9 - OT(setVol(int); QObject:connect(ui-addSongsButton,SIGNAL(clicked(),this,SLOT(ad dSongs(); QObject:connect(ui-playPauseButton,SIGNAL(clicked(),this,SLOT(pl ayPause(); QObject:connect(ui-stoptButton,SIGNAL(clicked(),this,SLOT(playSt op(); QObject:connect(ui-previousButton,SIGNAL(clicked(),this,SLOT(pla yPrevious(); QObject:connect(ui-nextButton,SIGNAL(clicked(),this,SLOT(playNe xt(); QObject:connect(player,SIGNAL(durationChanged(qint64),this,SLOT( durChanged(qint64); QObject:connect(player,SIGNAL(positionChanged(qint64),this,SLOT( posChanged(qint64); QObject:connect(ui-processSlider,SIGNAL(valueChanged(int),this,SL OT(setPos(int); QObject:connect(ui-clearButton,SIGNAL(clicked(),this,SLOT(clearLi st(); QObject:connect(ui-delectButton,SIGNAL(clicked(),this,SLOT(delect Song(); QObject:connect(ui-volumeButton,SIGNAL(clicked(),this,SLOT(volu - 10 - meSilence(); /设置按钮属性 ui-stoptButton-setStyleSheet(border:2px groove gray;border-radius:10px;padding:2px 4px;); ui-playPauseButton-setStyleSheet(border:2px groove gray;border-radius:10px;padding:2px 4px;); ui-previousButton-setStyleSheet(border:2px groove gray;border-radius:10px;padding:2px 4px;); ui-nextButton-setStyleSheet(border:2px groove gray;border-radius:10px;padding:2px 4px;); /构造相应的动作,用于右键弹出对话框 action_hideShow=new QAction(tr(隐藏/显示窗口部件),this); QObject:connect(action_hideShow,SIGNAL(triggered(),this,SLOT(hide Show(); action_addSongs=new QAction(tr(添加本地歌曲),this); action_addSongs-setShortcut(tr(Ctrl+I); QObject:connect(action_addSongs,SIGNAL(triggered(),this,SLOT(add Songs(); action_playPause=new QAction(tr(播放/暂停),this); action_playPause-setShortcut(tr(Ctrl+Enter); - 11 - QObject:connect(action_playPause,SIGNAL(triggered(),this,SLOT(pla yPause(); action_stop=new QAction(tr(停止),this); action_stop-setShortcut(tr(Ctrl+S); QObject:connect(action_stop,SIGNAL(triggered(),this,SLOT(playStop() ); action_previous=new QAction(tr(上一曲),this); action_previous-setShortcut(tr(Ctrl+Left); QObject:connect(action_previous,SIGNAL(triggered(),this,SLOT(play Previous(); action_next=new QAction(tr(下一曲),this); action_next-setShortcut(tr(Ctrl+Right); QObject:connect(action_next,SIGNAL(triggered(),this,SLOT(playNext (); action_addVolume=new QAction(tr(音量+(5%),this); action_addVolume-setShortcut(tr(Ctrl+Up); QObject:connect(action_addVolume,SIGNAL(triggered(),this,SLOT(ad dVolume(); action_redVolume=new QAction(tr(音量-(5%),this); action_redVolume-setShortcut(tr(Ctrl+Down); QObject:connect(action_redVolume,SIGNAL(triggered(),this
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师考试科目试题及答案
- 国企招聘面试全攻略不同行业与岗位的面试策略
- 工业自动化系统解决方案
- (完整版)数学初一分班资料专题真题A卷答案
- (完整版)数学新初一分班测试模拟题目经典解析
- (完整版)新初一分班数学真题模拟试题经典及解析
- (完整版)物理人教八年级下册期末资料专题试卷A卷
- (完整版)苏教六年级下册期末数学必考知识点试卷经典套题解析
- 市场经理营销策略总结
- 家庭教育指导与实践如何培养优-秀孩子
- 2025行业特供!合并报表软件行业适配TOP8:制造业-金融业专属方案
- 预防接种妈妈班课件
- 2025年河北保定市公安局招聘警务辅助人员48名考试笔试备考题库及答案解析
- 2025咸阳市总工会招聘社会工作者(2人)笔试考试备考题库及答案解析
- 贵州茅台股份有限公司财务绩效分析
- 2025年及未来5年中国计量校准行业市场调研及未来发展趋势预测报告
- 2026年广东省第一次普通高中学业水平合格性考试数学仿真模拟卷01(全解全析)
- 第三单元单元学习任务《文学短评》课件2025-2026学年统编版高中语文必修上册
- 核设施退役施工方案
- 成人手术后疼痛评估与护理TCNAS39─2023
- 注意缺陷多动障碍儿童社交技能培养方案
评论
0/150
提交评论