内容发布更新时间 : 2024/11/1 17:40:32星期一 下面是文章的全部内容请认真阅读。
精心整理
第一节 实现基本功能
说明:源代码我已经上传到CSDN网站,请大家到网站搜索“基于QT的音乐播放器源代码及详细教程”下载。
1.新建工程,基类选择Qwidget。双击打开界面文件,在界面文件中创建label显示时间、若干个toolbutton按钮和一个listWidget列表显示歌曲列表。点击“文件”->“新建”创建QT资源文件,在工程目录下建文件夹“images”, 双击QT资源文件添加前缀“/”,再添加图标文件。 2.单击上一曲按钮,在属性栏设置标题tooltip和图标icon: 界面如下: 3.右键几个按钮,转入槽函数,列表和歌词的信号选择clicked(bool)。 4.工程文件中添加语句 QT += phonon 对音乐播放器进行设计,主要用到模块中的MediaObject (管理媒体源) AudioOutput (连接物理设备)SeekSlider( 实现进度条)QList (实现播放列表 ) 大概地说, Phonon 的工作机制是使用 MediaObject 来管理 MediaSource 即源文件,通过 Path 连接到 AudioOutput ,最后是由 AudioOutput 将数据发送到相关物理设备。 5.修改widget.h头文件 在widget.h头文件添加语句: #include
Phonon::AudioOutput *audioOutput;//连接物理设备 Phonon::SeekSlider *seekSlider;//实现进度条 Phonon::VolumeSlider *volumeSlider;//音量调节 QList
精心整理
QAction *stop; QAction *open; QAction *sound; QAction *exit;
QAction *remove;
头文件声明函数:
public:
void creatActions();//创建动作
6.修改widget.cpp文件 构造函数添加: this->setWindowTitle(tr(\音乐播放器\));//设置标题 /**初始化媒体**/ audio =new Phonon::MediaObject();//媒体对象 audio->setTickInterval(1); audioOutput = new Phonon::AudioOutput(Phonon::VideoCategory);//音频输出 Phonon::createPath(audio,audioOutput);//连接媒体对象与音频输出 musicInformationMediaObject = new Phonon::MediaObject(this); //音乐信息对象 volumeSlider = new Phonon::VolumeSlider(audioOutput,this); //音量滑动条 volumeSlider->move(190,100); volumeSlider->resize(50,20); volumeSlider->setStyleSheet(\); volumeSlider->setFixedWidth(100);//固定音量条大小 seekSlider = new Phonon::SeekSlider(audio,this); //进度滑动条 seekSlider->move(10,35); seekSlider->resize(170,20); seekSlider->setStyleSheet(\); creatActions(); 函数定义: //播放/暂停 void Widget::on_toolButton_playpause_clicked() {
if(sourceList.isEmpty()) {
//QMessageBox::information(this, tr(\ music files\ tr(\ files to play\
return ; }
audio->setQueue(sourceList);//列表循环 if(audio->state() == Phonon::PlayingState) audio->pause(); else {
audio->play(); }
精心整理
}
//停止播放
void Widget::on_toolButton_stop_clicked() {
audio->stop(); }
void Widget::on_toolButton_open_clicked() {
QStringList files = QFileDialog::getOpenFileNames(this, tr(\ Files to play\)); // 使用 QFileDialog 的 getOpenFileNames 方法获取若干个音乐文件, QString file; foreach(file, files)// 使用 Qt 中的 foreach 遍历每个选中的文件,将其添加到播放列表中。 {
ui->listWidget->addItem(file); sourceList.append(file); } }
void Widget::creatActions() {
QIcon iconremove(\); QIcon iconstop(\); QIcon iconopen(\); QIcon iconsound(\); QIcon iconexit(\); iconpause = new QIcon(\); iconplay = new QIcon(\); remove = new QAction(iconremove,tr(\清空播放列表\),this); connect(remove,SIGNAL(triggered()),this,SLOT(removeSlot())); play = new QAction(*iconplay,tr(\播放\),this); connect(play,SIGNAL(triggered()),this,SLOT(on_toolButton_playpause_clicked())); stop = new QAction(iconstop,tr(\停止\),this); connect(stop,SIGNAL(triggered()),audio,SLOT(stop())); open = new QAction(iconopen,tr(\打开文件\),this); connect(open,SIGNAL(triggered()),this,SLOT(on_toolButton_open_clicked())); sound = new QAction(iconsound,tr(\静音\),this); sound->setCheckable(true);
connect(sound,SIGNAL(triggered(bool)),audioOutput,SLOT(setMuted(bool))); exit = new QAction(iconexit,tr(\退出\),this);
connect(exit,SIGNAL(triggered()),this,SLOT(exitSlot())); }
7.在main.cpp文件中添加中文支持:
#include
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
8.运行程序,效果如下: