一、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播放音乐内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
            
                                            
                                            
                                            
                                            
                                            
发表评论