我现在想用Mplayer播放音乐,首先当我点击一个按钮,出现一个Dialog,槽函数如下:
void ThreadDialog::openmusicfile()
{
/**************创建对话框 里面显示歌曲列表******************/
QFileDialog *dialog = new QFileDialog(this);
dialog->setDirectory("/tmp/music/");
dialog->setFileMode(QFileDialog::ExistingFile);
dialog->setFilter("Music files (*.mp3 *.wma )");
dialog->setViewMode(QFileDialog::List);
if (dialog->exec() == QDialog::Accepted) {
QStringList fileNames = dialog->selectedFiles();
if (!fileNames.isEmpty()) {
QString fileName;
int index = 0;
fileName = fileNames.at(index); //获得要播放的歌名
fprintf(stderr, "**************|%d|\n", index); //输出index值 用于测试
const char *name = fileName.toLatin1().data(); // Qstring 转化 char 格式
char buffer[128];
sprintf(buffer, "echo loadfile %s > /tmp/read.pipe", name);//将歌名输入到buffer里面
fprintf(stderr, "===========|%s|\n", buffer); //测试
system (buffer); //向mplayer管道输出要播的歌名
}
}
当我点击(双击)任意一首歌时,外部的mplayer可以播放歌曲,但是index的值,我打印出来一直是0,证明我的fileNames列表只有我当前点击的这首歌,列表里的其他歌曲都不存在,这是怎么回事,明明我的fileNames选择了当前目录下所有的文件呀,是跟双击歌名有关系?
我怀疑问题出现在
fileName = fileNames.at(index); 这一步,但是不知道怎么改!
我需要歌名列表,因为我还要循环播放,但是目前fileNames列表里只有一首歌,当我循环播放的时候,只播点击的那首歌,郁闷!希望各位前辈可以指点一二!!!!