我现在想用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列表里只有一首歌,当我循环播放的时候,只播点击的那首歌,郁闷!希望各位前辈可以指点一二!!!!