QT中phonon框架实现单曲循环

首先,初学QT,只能说是“实现”了单曲循环,可能方法欠妥。


为了达到单曲循环这一功能,特地继承QWidget写了个类BackPlat,但是这个BackPlat不show(),因此,是不会出现BackPlat对象的窗口。

以下是backplat.h的源码

#ifndef BACKPLAT_H
#define BACKPLAT_H

#include <QWidget>
#include <phonon/MediaObject>
using namespace Phonon;

namespace Ui {
class BackPlat;
}

class BackPlat : public QWidget
{
    Q_OBJECT
    
public:
    explicit BackPlat(QWidget *parent = 0);
    ~BackPlat();
public slots:
    void playAgain();
    
private:
    Ui::BackPlat *ui;
    MediaObject * backsound;
};

#endif // BACKPLAT_H

以下是backplat.cpp源码

#include "backplat.h"
#include "ui_backplat.h"

BackPlat::BackPlat(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::BackPlat)
{
    ui->setupUi(this);
    backsound = createPlayer(MusicCategory,MediaSource("G:/QTprogram/justforfun-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK____/debug/test.wav"));
    backsound->play();
    connect(backsound,SIGNAL(aboutToFinish()),this,SLOT(playAgain()));
}

BackPlat::~BackPlat()
{
    delete backsound;
    delete ui;
}
void BackPlat::playAgain()
{
    backsound->setCurrentSource(MediaSource("G:/QTprogram/justforfun-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK____/debug/test.wav"));
    backsound->play();
}

可见在BackPlat的构造函数中,有connect将backsound播放完毕的信号发送给BackPlat,而backPlat对象在收到信号后即执行playAgain();

现在是main.cpp源码

#include <QtGui/QApplication>
#include <QTextCodec>
#include "backplat.h"


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec *codec = QTextCodec::codecForName("GB2312");
           QTextCodec::setCodecForLocale(codec);
               QTextCodec::setCodecForCStrings(codec);
               QTextCodec::setCodecForTr(codec);
    BackPlat back;
    return a.exec();
}
如此,即实现循环播放
G:/QTprogram/justforfun-build-desktop-Qt_4_8_1_for_Desktop_-_MinGW__Qt_SDK____/debug/
目录下test.wav的功能。


由于是初学QT,如果大家有更好的方法,欢迎交流.....

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值