简单的音乐播放器(VS 2010 + Qt 4.8.5)
2013-08-02 22:21
162 查看
昨天历经千辛万苦,配置好了VS 2010中的Qt环境(包括Qt for VS插件),今天决定浅浅地品味一下将两者结合进行编程的魅力。
上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器,主要用到Phonon多媒体框架。
Phonon的工作机制:
使用MediaObject来管理MediaSource即源文件,通过Path连接到AudioOutput,最后是由AudioOutput将数据发送到相关物理设备。
1、新建一个工程:文件->新建->项目:
选择Qt Application,本人命名为Player1;
*注意在此过程一定要把Phonon库选上:
![](http://img.blog.csdn.net/20130802222124671?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHlsbG92ZTk4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2、创建好项目以后,可以看到VS自动生成了很多文件,先不用管它们:
![](http://img.blog.csdn.net/20130802222124890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHlsbG92ZTk4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
1)双击Form目录下的player1.ui,进行控件的添加:
![](http://img.blog.csdn.net/20130802222126609?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHlsbG92ZTk4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
说明,从上到下分别是:
一个ListWeight(名:listWidget),
一个VerticalLayout(名:verticalLayout),
四个PushButton(名:addBtn,playBtn,pauseBtn,stopBtn)。
当然,各种属性可以自行设置及更改(颜色,大小等);
2)此时,需要的控件已添加完毕,可以保存,并回到VS主页对其进行右击->编译,ui_player1.h文件得到完善;
3、接下来就是各控件对应功能的实现,并进行信号与槽的连接:
1)先来看头文件"player1.h",类的名称在项目创建过程中也可以进行更改(默认为:项目名称+Class):
2)源文件"player1.cpp":
3)主函数文件"main.cpp":
4、至此,便可以进行整个项目的编译、运行,结果为:
![](http://img.blog.csdn.net/20130802222126890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZHlsbG92ZTk4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
一首张宇的"给你们"先给大家。谢谢!
上网查了一些资料,学习了一些基础知识,决定做一个简单的音乐播放器,主要用到Phonon多媒体框架。
Phonon的工作机制:
使用MediaObject来管理MediaSource即源文件,通过Path连接到AudioOutput,最后是由AudioOutput将数据发送到相关物理设备。
1、新建一个工程:文件->新建->项目:
选择Qt Application,本人命名为Player1;
*注意在此过程一定要把Phonon库选上:
2、创建好项目以后,可以看到VS自动生成了很多文件,先不用管它们:
1)双击Form目录下的player1.ui,进行控件的添加:
说明,从上到下分别是:
一个ListWeight(名:listWidget),
一个VerticalLayout(名:verticalLayout),
四个PushButton(名:addBtn,playBtn,pauseBtn,stopBtn)。
当然,各种属性可以自行设置及更改(颜色,大小等);
2)此时,需要的控件已添加完毕,可以保存,并回到VS主页对其进行右击->编译,ui_player1.h文件得到完善;
3、接下来就是各控件对应功能的实现,并进行信号与槽的连接:
1)先来看头文件"player1.h",类的名称在项目创建过程中也可以进行更改(默认为:项目名称+Class):
#ifndef PLAYER1_H #define PLAYER1_H #include <QMainWindow> #include <Phonon> #include <QList> #include "ui_player1.h" class Player1Class : public QMainWindow { Q_OBJECT public: Player1Class(QWidget *parent = 0); ~Player1Class(); protected: void changeEvent(QEvent *e); private slots: void addFiles(); void playFile(); void pauseFile(); void stopFile(); private: Ui::Player1Class *ui; Phonon::MediaObject *mediaObject; Phonon::AudioOutput *audioOutput; Phonon::SeekSlider *seekSlider; QList<Phonon::MediaSource> sourceList;//播放列表 }; #endif //PLAYER1_H
2)源文件"player1.cpp":
#include <QtGui> #include "player1.h" #include "ui_player1.h" Player1Class::Player1Class(QWidget *parent) : QMainWindow(parent),ui(new Ui::Player1Class) { ui->setupUi(this); connect(this->ui->addBtn, SIGNAL(clicked()), this, SLOT(addFiles())); connect(this->ui->playBtn, SIGNAL(clicked()), this, SLOT(playFile())); connect(this->ui->pauseBtn, SIGNAL(clicked()), this, SLOT(pauseFile())); connect(this->ui->stopBtn, SIGNAL(clicked()), this, SLOT(stopFile())); mediaObject = new Phonon::MediaObject(this); audioOutput = new Phonon::AudioOutput(this); seekSlider = new Phonon::SeekSlider(this); Phonon::createPath(mediaObject, audioOutput); seekSlider->setMediaObject(mediaObject); this->ui->verticalLayout->addWidget(seekSlider); } Player1Class::~Player1Class() { delete ui; } void Player1Class::changeEvent(QEvent *e) { QMainWindow::changeEvent(e); switch (e->type()) { case QEvent::LanguageChange: ui->retranslateUi(this); break; default: break; } } void Player1Class::addFiles() { QStringList files = QFileDialog::getOpenFileNames(this, tr("Selec Files to play")); QString file; foreach(file, files) { this->ui->listWidget->addItem(file); sourceList.append(file); } } void Player1Class::playFile() { if(sourceList.isEmpty()) { QMessageBox::information(this, tr("no music files"), tr("no files to play")); return ; } mediaObject->setQueue(sourceList); mediaObject->play(); this->ui->playBtn->setEnabled(false); this->ui->pauseBtn->setEnabled(true); } void Player1Class::pauseFile() { mediaObject->pause(); this->ui->pauseBtn->setEnabled(false); this->ui->playBtn->setEnabled(true); } void Player1Class::stopFile() { mediaObject->stop(); this->ui->pauseBtn->setEnabled(true); this->ui->playBtn->setEnabled(true); }
3)主函数文件"main.cpp":
#include <QtGui/QApplication> #include "player1.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Player1Class w; w.show(); return a.exec(); }
4、至此,便可以进行整个项目的编译、运行,结果为:
一首张宇的"给你们"先给大家。谢谢!
相关文章推荐
- 简单的音乐播放器(VS 2010 + Qt 4.8.5)
- VS 2010配置Qt 4.8.5 (VS2008类似)
- VS 2010配置Qt 4.8.5
- VS 2010配置Qt 4.8.5
- VS 2010配置Qt 4.8.5
- vs 2010 build qt 4.7 error(转)
- QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
- VS2010 C++ MFC框架学习笔记1 - 创建一个简单的加法计算器(1)
- vs 2010 MFC 创建一个简单的统计字符串的界面
- QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
- VS2010+OSG3.2+CEGUI 0.8.4环境下实现简单的HelloWorld程序
- Qt5+VS 2013 Mediaplayer 音乐播放器 代码
- Qt的VS 2010插件安装
- QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
- QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
- Qt creator 2.7.1安装及VS 2010 +Qt 4.8.4配置
- Qt 4.8.6 PCL 1.8.0 VS 2010 联合编译常见错误
- vs2010调试qt代码 qsting变量值不显示
- VS2010+Qt5+MySql编程环境搭建
- VS+QT+Opencv配置与简单测试