QSoundEffect 类

QSoundEffect 类提供了一种播放低延迟声音效果的途径。 更多...

头文件 #include <QSoundEffect>
CMakefind_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmakeQT += multimedia
由下创建实例 SoundEffect
继承自 QObject

公共类型

enumLoop { Infinite }
enumStatus { Null, Loading, Ready, Error }

属性

公共函数

QSoundEffect(QObject *parent = nullptr)
QSoundEffect(const QAudioDevice &audioDevice, QObject *parent = nullptr)
virtual~QSoundEffect()
QAudioDeviceaudioDevice()
boolisLoaded() const
boolisMuted() const
boolisPlaying() const
intloopCount() const
intloopsRemaining() const
voidsetAudioDevice(const QAudioDevice &device)
voidsetLoopCount(int loopCount)
voidsetMuted(bool muted)
voidsetSource(const QUrl &url)
voidsetVolume(float volume)
QUrlsource() const
QSoundEffect::Statusstatus() const
floatvolume() const

公共槽

voidplay()
voidstop()

信号

静态公共成员

QStringList支持的媒体类型()

详细说明

此类允许您以较低的延迟方式播放未压缩的音频文件(通常是WAV文件),并且适合于对用户操作的“反馈”类型的声音(例如,虚拟键盘声音、弹出对话框的正负反馈或游戏声音)。如果不重视低延迟,请考虑使用QMediaPlayer类,因为它支持更广泛的媒体格式,并且资源占用较少。

此示例演示了如何播放循环的、有些安静的声音效果

QSoundEffect effect;
effect.setSource(QUrl::fromLocalFile("engine.wav"));
effect.setLoopCount(QSoundEffect::Infinite);
effect.setVolume(0.25f);
effect.play();

通常,声音效果应该被重用,这样就可以预先执行所有解析和准备,并且只在必要时触发。这有助于降低音频播放的延迟。

MyGame()
    : m_explosion(this)
{
    m_explosion.setSource(QUrl::fromLocalFile("explosion.wav"));
    m_explosion.setVolume(0.25f);

    // Set up click handling etc.
    connect(clickSource, &QPushButton::clicked, &m_explosion, &QSoundEffect::play);
}
private:
QSoundEffect m_explosion;

由于QSoundEffect需要更多资源来实现低延迟播放,因此平台可能会限制同时播放的声音效果数量。

成员类型文档

枚举 QSoundEffect::Loop

常量描述
QSoundEffect::Infinite-2用作setLoopCount()的参数以实现无限循环

枚举 QSoundEffect::Status

常量描述
QSoundEffect::Null0没有设置源或源为空。
QSoundEffect::Loading1声音效果正在尝试加载源。
QSoundEffect::Ready2源已加载并准备播放。
QSoundEffect::Error3在操作过程中发生错误,例如加载源失败。

属性文档

audioDevice : QAudioDevice

返回QAudioDevice实例。

访问函数

QAudioDeviceaudioDevice()
voidsetAudioDevice(const QAudioDevice &device)

通知信号

voidaudioDeviceChanged()

loops : int

此属性持有声音播放的次数。值为0或1表示只播放一次;设置为SoundEffect.Infinite以启用无限循环。

在声音效果播放时可以更改此值,在这种情况下,它将更新剩余循环数到新值。

访问函数

intloopCount() const
voidsetLoopCount(int loopCount)

通知信号

[只读] loopsRemaining : const int

此属性包含在声音效果自动停止之前的剩余循环次数,或在loops中设置QSoundEffect::Infinite如果已设置。

访问函数

intloopsRemaining() const

通知信号

muted : bool

此属性提供了控制静音的途径。值为true将静音此效果。

访问函数

boolisMuted() const
voidsetMuted(bool muted)

通知信号

void静音变化()

[只读] playing : const bool

此属性表示声音效果是否正在播放。

访问函数

boolisPlaying() const

通知信号

source : QUrl

此属性包含要播放的声音的URL。对于SoundEffect尝试加载源,URL必须存在,并且应用程序必须在指定的目录中有读取权限。

访问函数

QUrlsource() const
voidsetSource(const QUrl &url)

通知信号

void源变化()

[只读] status : const Status

此属性表示声音效果的当前状态,从QSoundEffect::Status枚举。

访问函数

QSoundEffect::Statusstatus() const

通知信号

void状态变化()

volume : float

此属性包含声音效果播放的音量,从0.0(静音)到1.0(全音量)。

访问函数

floatvolume() const
voidsetVolume(float volume)

通知信号

void音量变化()

成员函数文档

[显式] QSoundEffect::QSoundEffect(QObject *parent = nullptr)

创建一个带有指定父对象的QSoundEffect。

[显式] QSoundEffect::QSoundEffect(const QAudioDevice &audioDevice, QObject *parent = nullptr)

创建一个带有指定音频设备父对象的QSoundEffect。

[虚拟 noexcept] QSoundEffect::~QSoundEffect()

销毁此声音效果。

bool QSoundEffect::isLoaded() const

返回声音效果是否已完成加载

bool QSoundEffect::isMuted() const

返回此声音效果是否被静音

注意:属性muted的获取器函数。

bool QSoundEffect::isPlaying() const

如果声音效果当前正在播放,则返回true,否则返回false

注意:属性playing的获取器函数。

[信号] void QSoundEffect::loadedChanged()

当加载状态改变时,发出loadedChanged信号。

int QSoundEffect::loopCount() const

返回此声音效果在停止之前将被播放的总次数。

查看loopsRemaining()方法获取当前剩余的循环次数。

注意: 属性 loops 的获取器函数。

另请参阅 setLoopCount

[信号] void QSoundEffect::loopCountChanged()

loopCountChanged 信号在初始循环次数更改时发出。

注意: 属性 loops 的通知信号。

[信号] void QSoundEffect::loopsRemainingChanged()

loopsRemainingChanged 信号在剩余循环次数更改时发出。

注意: 属性 loopsRemaining 的通知信号。

[信号] void QSoundEffect::mutedChanged()

mutedChanged 信号在静音状态更改时发出。

注意: 属性 muted 的通知信号。

[槽] void QSoundEffect::play()

开始播放音效,循环次数由属性 loops 指定。

[信号] void QSoundEffect::playingChanged()

playingChanged 信号在播放属性更改时发出。

注意: 属性 playing 的通知信号。

void QSoundEffect::setLoopCount(int loopCount)

将播放此音效的总次数设置为 loopCount

将循环次数设置为 0 或 1 表示仅播放一次音效;传递 QSoundEffect::Infinite 以无限重复。可以在播放音效的同时更改循环次数,在这种情况下,它将更新剩余循环次数到新的 loopCount

注意: 属性 loops 的设置器函数。

另请参阅 loopCount() 和 loopsRemaining

void QSoundEffect::setMuted(bool muted)

设置是否静音此音效的播放。

如果 muted 为 true,则播放将被静音(无声),否则将按当前指定的 volume 播放。

注意: 属性 muted 的设置器函数。

另请参阅 isMuted()。

void QSoundEffect::setSource(const QUrl &url)

将当前播放的 URL 设置为 url

注意: 属性 source 的设置器函数。

另请参阅 source

void QSoundEffect::setVolume(float volume)

将音效音量设置为 volume

音量线性从 0.0(静音)调整到 1.0(最大音量)。超出此范围之外的值将被限制。

默认音量为 1.0

UI 音量控件通常应该非线性缩放。例如,使用对数刻度将产生感知响度的线性变化,这正是用户通常期望的音量控制方式。有关更多详细信息,请参阅 QtAudio::convertVolume()。

注意:该属性的设置函数为 volume

另见:volume

QUrl QSoundEffect::source() const

返回当前要播放的 URL。

注意:该属性的获取函数为 source。

另见:setSource

[signal] void QSoundEffect::sourceChanged()

sourceChanged 信号在源已被更改时发出。

注意:该属性的信号通知器为 source

QSoundEffect::Status QSoundEffect::status() const

返回此音效的当前状态。

注意:该属性的获取函数为 status。

[signal] void QSoundEffect::statusChanged()

statusChanged 信号在状态属性更改时发出。

注意:该属性的信号通知器为 status

[slot] void QSoundEffect::stop()

停止当前播放。

[static] QStringList QSoundEffect::supportedMimeTypes()

返回此平台支持的 MIME 类型列表。

float QSoundEffect::volume() const

返回此音效的当前音量,从 0.0(静音)到 1.0(最大音量)。

注意:该属性的获取函数为 volume。

另见:setVolume

[signal] void QSoundEffect::volumeChanged()

volumeChanged 信号在音量更改时发出。

注意:该属性的信号通知器为 volume

© 2024 Qt 公司有限公司。此处包含的文档贡献是其各自所有者的版权。此处提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授予的。Qt 及其相应标志是芬兰和/或其他国家的 Qt 公司的商标。所有其他商标均为其各自所有者的财产。