当前位置: 代码网 > it编程>编程语言>C/C++ > Qt使用QSoundEffect类实现播放音效或音乐

Qt使用QSoundEffect类实现播放音效或音乐

2024年12月28日 C/C++ 我要评论
一、qsoundeffect类介绍qsoundeffect是一个用于播放音效的qt类。它提供了一种简单的方式来加载和播放音效文件。qsoundeffect的用法非常简单。首先,通过调用setsourc

一、qsoundeffect类介绍

qsoundeffect是一个用于播放音效的qt类。它提供了一种简单的方式来加载和播放音效文件。

qsoundeffect的用法非常简单。首先,通过调用setsource()方法,你可以指定要播放的音效文件的路径。然后,通过调用play()方法,你可以开始播放音效。你还可以通过设置其他属性来控制音效的音量、循环播放、音效音调、音效速度等。

qsoundeffect支持多种音频格式,包括wav、mp3、ogg等。

qsoundeffect还提供了一些方法,如pause()、stop()、isplaying()等,以便你可以进一步控制音效的播放。

总之,qsoundeffect是一个简单易用的qt类,用于播放音效。它提供了一种方便的方式来加载和播放音效文件,并提供了一些属性和方法来控制音效的播放。

二、qsoundeffect单例类封装

.hpp

#ifndef soundeffecthelper_h
#define soundeffecthelper_h

#include <qobject>
#include <qsoundeffect>
#include <qurl>
#include <qdebug>

class soundeffecthelper : public qobject
{
    q_object
private:
    explicit soundeffecthelper(qobject *parent = nullptr);
    soundeffecthelper(const soundeffecthelper&) = delete;
    soundeffecthelper operator=(const soundeffecthelper &) = delete;
public:
    typedef enum
    {
        musickeypress,
        musicfailed,
        musicsuccess,
        musictoast,
        musicmax,
    }music;
    static soundeffecthelper *getinstance()
    {
        if(instance == nullptr)
            instance = new soundeffecthelper();
        return instance;
    }
    void play(music m);
private:
    void valueinit();

private:
    static soundeffecthelper *instance;
    qsoundeffect soundeffectbuf[musicmax];
};

#endif // soundeffecthelper_h

.cpp

#include "soundeffecthelper.h"

soundeffecthelper *soundeffecthelper::instance = nullptr;

soundeffecthelper::soundeffecthelper(qobject *parent)
    : qobject{parent}
{
    this->valueinit();
    qdebug()<<"dsfsdfsd";
}
void soundeffecthelper::valueinit()
{
    soundeffectbuf[musickeypress].setsource(qurl::fromlocalfile(":/music/music/button.wav"));
    soundeffectbuf[musickeypress].setloopcount(1);// 音频循环的次数
    soundeffectbuf[musickeypress].setvolume(1.0f);// 音量

    soundeffectbuf[musicfailed].setsource(qurl::fromlocalfile(":/music/music/failed.wav"));
    soundeffectbuf[musicfailed].setloopcount(1);// 音频循环的次数
    soundeffectbuf[musicfailed].setvolume(1.0f);// 音量

    soundeffectbuf[musicsuccess].setsource(qurl::fromlocalfile(":/music/music/success.wav"));
    soundeffectbuf[musicsuccess].setloopcount(1);// 音频循环的次数
    soundeffectbuf[musicsuccess].setvolume(1.0f);// 音量

    soundeffectbuf[musictoast].setsource(qurl::fromlocalfile(":/music/music/toast.wav"));
    soundeffectbuf[musictoast].setloopcount(1);// 音频循环的次数
    soundeffectbuf[musictoast].setvolume(1.0f);// 音量
}
void soundeffecthelper::play(music m)
{
    if(m > musicmax)
    {
        qwarning()<<"invalid music value!";
        return;
    }
    soundeffectbuf[m].play();
}

到此这篇关于qt使用qsoundeffect类实现播放音效或音乐的文章就介绍到这了,更多相关qt qsoundeffect播放音乐内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com