• 6068阅读
  • 5回复

SOS   自动播放列表 [复制链接]

上一主题 下一主题
离线dl19860916
 

只看楼主 倒序阅读 楼主  发表于: 2010-04-29
//开始播放
void QPlayer::on_playButton_clicked()
    {
    if(listWidget->count()>0)//判断播放列表是否为空
        {
           if(check==0)//判断'开始'按钮是否按过
            {
               QPlayer::showEvent();   //没有按过,则激活定时事件
               check=1;
            }  

    
     QSound tmp(listWidget->currentItem()->text());
    tmp.play();            }
    }


//顺序播放
void QPlayer::on_seqplayButton_clicked()
    {
        int i=listWidget->currentRow();//获得当前歌曲位置
                 int j=listWidget->count();//获取歌曲总数
                int a;
        for(a=i;a<j;a++)
        {
           listWidget->setCurrentRow(a);
          QSound tmp(listWidget->currentItem()->text());  
          tmp.play();
      
        }
    
    }



我想让添加到列表里的歌曲顺序播放,应该如何写呀?那个FOR循环好像不对,点击顺序播放按钮它就跳到最后播放了。
离线lijundeqi
只看该作者 1楼 发表于: 2010-04-29
判断当前这首播放完,然后让其执行播放下一首!
离线yangfanxing
只看该作者 2楼 发表于: 2010-04-29
点击顺序播放按钮它就跳到最后播放了。

【原因分析】我觉得是其实是播放了,从当前之后全部,并且是按顺序;但是用了for,它就开始一首,很快进入下一首,这样循环到最后就剩最后一首在播放了;
【解决方法】
或许不能用for这个循环;1L的建议很对;你可以加一个判断是否读完的函数,
读完->发送信号->对应槽函数播放下一首->读完->发送信号->...如此循环!
判断语句很简单:QSound::isFinished()
PHPWind好恶心。。。不想看这种界面。。。
离线dl19860916

只看该作者 3楼 发表于: 2010-05-01
bool QSound::isFinished () const
Returns true if the sound has finished playing; otherwise returns false.
Warning: On Windows this function always returns true for unlooped sounds.
我使用了QSound::isFinished()去判断,可是还是不行
离线dl19860916

只看该作者 4楼 发表于: 2010-05-01
void QPlayer::on_playButton_clicked()
    {
                
            int i=listWidget->currentRow();//获得当前歌曲位置
           int j=listWidget->count();//获取歌曲总数
           int a;
          
        for(a=i;a<j;a++)
        {
            QSound tmp(listWidget->currentItem()->text());
            tmp.play();
            if(tmp.isFinished())
                 {
                  listWidget->setCurrentRow(i+1);
                 }
                
         }
  }
每次播放都直接跳到第2首,放完也没有继续循环
离线dl19860916

只看该作者 5楼 发表于: 2010-05-07
有人吗?
快速回复
限100 字节
 
上一个 下一个