Qt使用QSoundEffect播放wav文件

废话不多说,直接贴代码,代码只是简单的播放以及获取播放状态。
一: 在pro里面添加

QT       +=  multimedia

二:头文件
widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QtMultimedia/QSoundEffect>
#include <QDir>
#include <QDebug>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void OnPlayingChanged();

private:
    void OnPlayVoice(QString fileName);
    bool GetPlayState();

private:
    QSoundEffect*                    m_pSoundEffect;//语音播放控件

};
#endif // WIDGET_H

三:函数实现 widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    m_pSoundEffect = new QSoundEffect;//语音播放控件
    connect(m_pSoundEffect, SIGNAL(playingChanged()), this, SLOT(OnPlayingChanged()));

    QString strFile = "test.wav";
    OnPlayVoice(strFile);
}

Widget::~Widget()
{
}

void Widget::OnPlayVoice(QString fileName)//播放wav文件
{
    QString strPocPath = QString("%1/%2").arg(QDir::currentPath()).arg(fileName);
    m_pSoundEffect->setSource(QUrl::fromLocalFile(strPocPath));
    //m_pSoundEffect->setLoopCount(QSoundEffect::Infinite);注释掉只播放一次,打开循环播放
    m_pSoundEffect->setVolume(1.0f);
    m_pSoundEffect->play();
}

void Widget::OnPlayingChanged()//播放状态改变槽函数
{
    bool isPlaying = m_pSoundEffect->isPlaying();
    if (!isPlaying)
    {
        qDebug()<<"not playing";
    }
    else
    {
        qDebug()<<"playing";
    }
}

bool Widget::GetPlayState()//获取播放状态
{
    return m_pSoundEffect->isPlaying();
}

四:将要播放的wav文件拷贝到运行目录下面

五:如果出现类似“QSoundEffect(qaudio): Error decoding source file:xxxx/test.wav”的问题,请检查播放文件路径是否正确。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值