使用QT进行MP3播放器的设计与实现
内容
在Linux平台(Redhat或Ubuntu)环境下配置QT环境,设计一个基于图形化界面的MP3播放器。
抽象数据类型定义
QT是一个拥有很多C++封装方法的集成工具,我们使用时候需要在.h文件的类定义中添加自己所需要的变量和方法定义
1 定义int类型私有变量 playIndex存放进程标号
2 定义QPrecess类型私有变量*playProcess控制进程
3 定义QStringList 类型私有变量playList存放音乐列表
4 定义Init()初始化函数函数和playMovie()声明
5 在slots中添加所需要的槽函数,即事件触发的处理函数。
6 arguments存放文件,program存放进程工具,用于process进程的执行,比如->start()函数的两个参数一个是执行的进程,一个是arg参数。
环境搭建
(1)QT安装与配置
解压qt-everywhere-opensource-src-4.7.3.tar.gz
命令tar -xvzf qt-everywhere-opensource-src-4.7.3.tar.gz
进入qt-everywhere-opensource-src-4.7.3 目录 执行配置文件
命令 sudo ./configure 安装过程键入 o yes
等待安装成功
(2)编译源码
命令make –j8
安装程序 make install 安装成功后系统生成一个文件 /usr/local/Trolltech/Qt-4.7.3/bin/qmake
(3)配置QT环境变量
命令 vi /usr/local/Trolltech/Qt-4.7.3.setenv.sh
export QTDIR=/usr/local/Trolltech/Qt-4.7.3
export PATH=QTDIR/bin:QTDIR/bin:QTDIR/bin:PATH
export LD_LIBRARY_PATH=QTDIR/lib:/usr/local/lib:QTDIR/lib:/usr/local/lib:QTDIR/lib:/usr/local/lib:LD_LIBRARY_PATH
保存退出 wq
命令 source/usr/local/Trolltech/Qt-4.7.3.setenv.sh
命令qmake –v 输出版本信息 表明配置成功
(4)测试
执行命令 qmake –project qmake make ./keshe
可正常使用,接下来进入正题。
详细设计
设计栏的工具拖5个Push button 和2个Horizontal Spacer
1个滑槽horizontal slider 和1个调节旋钮dial
替换部件样式
新建资源文件与添加图片资源
然后进行图标大小修改和格式调整
修改各个部件的样式颜色
界面如下
修改对象名便于函数建立,每个部件转到槽函数定义功能
代码设计
Widget类的声明
class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void on_btn_open_clicked(); void on_btn_play_clicked(); void on_btn_stop_clicked(); void on_btn_prevous_clicked(); void on_btn_next_clicked(); void on_dial_voice_valueChanged(int value); private: Ui::Widget *ui; QStringList playList; int playIndex; QProcess *playProcess; void Init(); void playMovie(const QString filename); };
初始化
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); Init(); } Widget::~Widget() { delete ui; } void Widget::Init() { playList.clear(); playIndex=0; playProcess=new QProcess(this); ui->lineEdit2->setText("now playing..."); }
定义打开文件方法
oid Widget::on_btn_open_clicked() { QStringList array = QFileDialog::getOpenFileNames(this,"open your file", "/home/liujinze/keshe/qtmp3/mp3/music","video(*.mp3 )"); if(array.length()<=0){ return; } playList =array; playIndex=0; playMovie(playList.at(playIndex)); }
定义播放功能方法,调用进程
void Widget::playMovie(const QString filename){ QString program="/usr/bin/madplay"; QStringList arguments; arguments<<filename; QString s=filename; ui->lineEdit->setText(s); playProcess->close(); system("killall -9 madplay"); playProcess->start(program,arguments); }
定义暂停继续上一首下一首的切换功能
void Widget::on_btn_play_clicked()//继续 { system("killall -CONT madplay &"); } void Widget::on_btn_stop_clicked()//暂停 { system("killall -STOP madplay &"); } void Widget::on_btn_prevous_clicked()//上一首 { if(playIndex>0){ playIndex--; playMovie(playList.at(playIndex)); } } void Widget::on_btn_next_clicked()//下一首 { if(playIndex<playList.length()-1){ playIndex++; playMovie(playList.at(playIndex)); } }
定义声音调节方法
void Widget::on_dial_voice_valueChanged(int value) { char tmp[100]; sprintf(tmp,"amixer set Master %d% ",value); system(tmp); }
使用效果
可以执行打开文件操作自己添加文件或多个文件,实现了音量调节,进度条更新暂停播放与上下首切换
- Android UI设计之<六>使用HTML标签,实现在TextView中对部分文字进行加粗显示
- 设计模式学习(十四)————抽象工厂模式(使用Qt框架的反射技术——根据字符串动态创建类来实现)
- ASP.NET网站权限设计实现(一)——使用PowerDesigner进行数据库设计
- ASP.NET网站权限设计实现(一)——使用PowerDesigner进行数据库设计
- ASP.NET网站权限设计实现(一)——使用PowerDesigner进行数据库设计
- Qt使用QTextEdit进行文本编辑实现查找高亮
- 使用VS2010进行QT开发Hello,Qt的实现
- ASP.NET网站权限设计实现(一)——使用PowerDesigner进行数据库设计
- 使用VS2010调用QtDesigner设计的UI文件,并实现控件功能
- 使用异或进行简单的密码加密(JAVA实现)
- 原型设计实践-使用gui design studio进行原型设计
- hibernate使用LIKE进行模糊查找,并实现分页
- 使用PowerDesigner进行数据库设计时的一些技巧【转】
- QT中如何进行DEBUG和使用cout,cin等
- 如何使用表名做为参数实现存储过程的设计
- VMware实现单机使用WinDbg进行调试的方法
- 原:使用objectdatasource进行简单三层架构的开发 , 并实现Repeater现删改查
- 使用框架和滑动门技术进行网页设计
- 使用 AJAX,局部刷新 GridView 进行数据绑定的简单实现
- SPCAMLEditor使用系列(3)--利用SPCamlEditor实现 时间字段跟当前时间进行实时比较计算