#include <QtGui>
#include "mainwindow.h"
#include "aboutdialog.h"
#include "about.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
//定义可以播放的文件格式
exts.append("mp3");
exts.append("wma");
exts.append("mid");
exts.append("wav");
exts.append("mpa");
exts.append("mp2");
exts.append("m1a");
exts.append("m2a");
exts.append("ogg");
exts.append("ra");
exts.append("m4a");
exts.append("aac");
exts.append("mka");
exts.append("ape");
exts.append("mpc");
exts.append("mod");
exts.append("flac");
currentPlayIndex=-1; //当前播放的曲目
initView(); //初始化界面
}
MainWindow::~MainWindow()
{
delete this;
}
//overwrite system close Event
void MainWindow::closeEvent(QCloseEvent *event)
{
QMessageBox::StandardButton ret=QMessageBox::question(this,"Music player","您确定要退出程序吗?",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);
if(ret==QMessageBox::Yes)
{
//释放播放器资源
mediaObject->stop();
mediaObject->clearQueue();
exit(0);
}
else
{
event->ignore();
}
}
void MainWindow::initView()
{
resize(380,90);
setMaximumSize(380,300);
setMinimumSize(380,90);
setWindowTitle(tr("网络mp3"));
setWindowIcon(QIcon("1.png"));
audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this);
mediaObject = new Phonon::MediaObject(this);
mediaObject->setTickInterval(1000);
connect(mediaObject, SIGNAL(tick(qint64)), this, SLOT(tick(qint64)));//关联进度时间显示
connect(mediaObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)),
this, SLOT(stateChanged(Phonon::State,Phonon::State)));//关联进度条
connect(mediaObject, SIGNAL(currentSourceChanged(Phonon::MediaSource)),
this, SLOT(sourceChanged(Phonon::MediaSource)));
connect(mediaObject, SIGNAL(finished()),
this, SLOT(playFinished()));
Phonon::createPath(mediaObject, audioOutput);
addFileAction=new QAction(tr("添加文件"),this);
addFileAction->setShortcut(tr("Ctrl+O"));
connect(addFileAction,SIGNAL(triggered()),this,SLOT(addFiles()));
addDirectoryAction=new QAction(tr("添加目录"),this);
addDirectoryAction->setShortcut(tr("Ctrl+D"));
connect(addDirectoryAction,SIGNAL(triggered()),this,SLOT(addDirectory()));
openPlayListAction=new QAction(tr("打开列表"),this);
openPlayListAction->setShortcut(tr("Ctrl+L"));
connect(openPlayListAction,SIGNAL(triggered()),this,SLOT(openPlayList()));
savePlayListAction=new QAction(tr("保存列表"),this);
savePlayListAction->setShortcut(tr("Ctrl+S"));
connect(savePlayListAction,SIGNAL(triggered()),this,SLOT(savePlayList()));
quitAction = new QAction(tr("退出程序"), this);
quitAction->setShortcut(tr("Ctrl+Q"));
connect(quitAction,SIGNAL(triggered()),this,SLOT(close()));
//文件菜单
QMenu *fileMenu=menuBar()->addMenu(tr("文件"));
fileMenu->addAction(addFileAction);//添加文件
fileMenu->addAction(addDirectoryAction);//添加目录
fileMenu->addSeparator();//
fileMenu->addAction(openPlayListAction);//打开播放列表
fileMenu->addAction(savePlayListAction);//保存播放列表
fileMenu->addSeparator();
fileMenu->addAction(quitAction);//退出
playAction = new QAction(style()->standardIcon(QStyle::SP_MediaPlay), tr("播放"), this);
playAction->setShortcut(tr("Ctrl+P"));
playAction->setDisabled(true);
pauseAction = new QAction(style()->standardIcon(QStyle::SP_MediaPause), tr("暂停"), this);
pauseAction->setShortcut(tr("Ctrl+A"));
pauseAction->setDisabled(true);
stopAction = new QAction(style()->standardIcon(QStyle::SP_MediaStop), tr("停止"), this);
stopAction->setShortcut(tr("Ctrl+H"));
stopAction->setDisabled(true);
nextAction = new QAction(style()->standardIcon(QStyle::SP_MediaSkipForward), tr("下一曲"), this);
nextAction->setShortcut(tr("Ctrl+N"));
previousAction = new QAction(style()->standardIcon(QStyle::SP_MediaSkipBackward), tr("上一曲"), this);
previousAction->setShortcut(tr("Ctrl+R"));
findAction = new QAction(style()->standardIcon(QStyle::SP_MediaSkipBackward), tr("网络服务"), this);
findAction->setShortcut(tr("Ctrl+F"));
connect(playAction, SIGNAL(triggered()), mediaObject, SLOT(play()));
connect(pauseAction, SIGNAL(triggered()),mediaObject, SLOT(pause()) );
connect(stopAction, SIGNAL(triggered()), mediaObject, SLOT(stop()));
connect(previousAction,SIGNAL(triggered()),this,SLOT(previous()));
connect(nextAction,SIGNAL(triggered()),this,SLOT(next()));
connect(findAction,SIGNAL(triggered()),this,SLOT(findSlot()));
//控制菜单
QMenu *controlMenu=menuBar()->addMenu(tr("操作服务"));
controlMenu->addAction(playAction);//播放
controlMenu->addAction(pauseAction);//暂停
controlMenu->addAction(stopAction);//停止
controlMenu->addAction(previousAction);//上一首
controlMenu->addAction(nextAction);//下一首
controlMenu->addAction(findAction);//网络服务
listPlayMode=new QAction(tr("列表播放"),this);
listPlayMode->setCheckable(true);
listPlayMode->setChecked(true);
connect(listPlayMode,SIGNAL(triggered()),this,SLOT(listPlayModeCliked()));
shuffleMode=new QAction(tr("随机播放"),this);
connect(shuffleMode,SIGNAL(triggered()),this,SLOT(shuffleModeCliked()));
oneLoopMode=new QAction(tr("单曲循环"),this);
connect(oneLoopMode,SIGNAL(triggered()),this,SLOT(oneLoopModeCliked()));
//播放模式控制菜单
QMenu *playModeMenu=menuBar()->addMenu(tr("播放模式"));
playModeMenu->addAction(listPlayMode);//列表播放
playModeMenu->addAction(shuffleMode);//随机播放
playModeMenu->addAction(oneLoopMode);//单曲播放
//视图菜单
showTableListAction=new QAction(tr("显示播放列表"),this);
showTableListAction->setShortcut(tr("Ctrl+T"));
connect(showTableListAction,SIGNAL(triggered()),this,SLOT(showTableListClicked()));
QMenu *viewMenu=menuBar()->addMenu(tr("视图"));
viewMenu->addAction(showTableListAction);
//关于菜单
aboutAction=new QAction(tr("关于"),this);
aboutAction->setShortcut(tr("Ctrl+B"));
aboutQtAction = new QAction(tr("关于开发软件QT"), this);
aboutQtAction->setShortcut(tr("Ctrl+Q"));
connect(aboutAction,SIGNAL(triggered()),this,SLOT(aboutActionClicked()));
connect(aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
QMenu *helpMenu=menuBar()->addMenu(tr("帮助"));
helpMenu->addAction(aboutAction);
helpMenu->addAction(aboutQtAction);
QPalette palette;
palette.setBrush(QPalette::Shadow,Qt::red);
timeLcd = new QLCDNumber;//播放时间显示
timeLcd->setPalette(palette);
timeLcd->display("00:00");//初始显示00:00
seekSlider = new Phonon::SeekSlider(this);//进度显示条
seekSlider->setMediaObject(mediaObject);
QHBoxLayout *seekerLayout = new QHBoxLayout();
seekerLayout->addWidget(seekSlider);
volumeSlider = new Phonon::VolumeSlider(this);//音量控制
volumeSlider->setAudioOutput(audioOutput);
volumeSlider->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
volumeSlider->setOrientation(Qt::Horizontal);
QToolBar *toolbar=addToolBar("Music Player Control Toolbar");//工具栏
toolbar->addAction(playAction);//播放
toolbar->addAction(pauseAction);//暂停
toolbar->addAction(stopAction);//停止
toolbar->addAction(previousAction);//上一首
toolbar->addAction(nextAction);//下一首
toolbar->addAction(findAction);//查找
tableList=new QTableWidget(0,1);
QStringList headers;
headers << tr("序号") << tr("歌名");
tableList->setHorizontalHeaderLabels(headers);
tableList->setColumnWidth(0,380*2);
tableList->setSelectionMode(QAb
没有合适的资源?快使用搜索试试~ 我知道了~
基于QT制作的音乐播放器(附原代码)
共39个文件
dll:9个
cpp:7个
o:7个
5星 · 超过95%的资源 需积分: 45 132 下载量 5 浏览量
2011-10-21
10:56:26
上传
评论 7
收藏 4.66MB RAR 举报
温馨提示
基于QT4制作的音乐播放器支持mp3、wav等17种格式音乐文件,网络服务还未完善
资源推荐
资源详情
资源评论
收起资源包目录
QT制作音乐播放器.rar (39个子文件)
qt制作音乐播放器
musicPlayer
musicPlayer.pro 470B
aboutdialog.h 335B
about.cpp 1KB
about.h 736B
aboutdialog.cpp 1004B
3.jpg 61KB
1.png 41KB
about.ui 3KB
myapp.rc 62B
main.cpp 391B
mainwindow.ui 989B
mainwindow.cpp 21KB
dialog.ui 398B
mainwindow.h 2KB
musicPlayer.pro.user 23KB
myappico.ico 7KB
aboutdialog.ui 368B
音乐播放器
QtGui4.dll 9.39MB
moc_mainwindow.cpp 4KB
moc_mainwindow.o 10KB
1.gif 4KB
QtGuid4.dll 0B
QtCore4.dll 2.43MB
mingwm10.dll 11KB
musicPlayer.exe 116KB
1.png 41KB
phonon4.dll 337KB
moc_aboutdialog.o 8KB
moc_about.o 9KB
mainwindow.o 51KB
moc_aboutdialog.cpp 2KB
moc_about.cpp 3KB
QtCored4.dll 0B
QtNetwork4.dll 1.15MB
libgcc_s_dw2-1.dll 42KB
main.o 2KB
phonond4.dll 0B
about.o 14KB
aboutdialog.o 5KB
共 39 条
- 1
逗.你玩
- 粉丝: 6
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页