QSoundEffect 类
QSoundEffect 类提供了一种播放低延迟声音效果的途径。 更多...
| 头文件 | #include <QSoundEffect> | 
| CMake | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) | 
| qmake | QT += multimedia | 
| 由下创建实例 | SoundEffect | 
| 继承自 | QObject | 
公共类型
属性
| 
 | 
公共函数
| QSoundEffect(QObject *parent = nullptr) | |
| QSoundEffect(const QAudioDevice &audioDevice, QObject *parent = nullptr) | |
| virtual | ~QSoundEffect() | 
| QAudioDevice | audioDevice() | 
| bool | isLoaded() const | 
| bool | isMuted() const | 
| bool | isPlaying() const | 
| int | loopCount() const | 
| int | loopsRemaining() const | 
| void | setAudioDevice(const QAudioDevice &device) | 
| void | setLoopCount(int loopCount) | 
| void | setMuted(bool muted) | 
| void | setSource(const QUrl &url) | 
| void | setVolume(float volume) | 
| QUrl | source() const | 
| QSoundEffect::Status | status() const | 
| float | volume() const | 
公共槽
信号
| void | audioDeviceChanged() | 
| void | loadedChanged() | 
| void | loopCountChanged() | 
| void | 剩余循环变化() | 
| void | 静音变化() | 
| void | 播放状态变化() | 
| void | 源变化() | 
| void | 状态变化() | 
| void | 音量变化() | 
静态公共成员
| 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::Null | 0 | 没有设置源或源为空。 | 
| QSoundEffect::Loading | 1 | 声音效果正在尝试加载源。 | 
| QSoundEffect::Ready | 2 | 源已加载并准备播放。 | 
| QSoundEffect::Error | 3 | 在操作过程中发生错误,例如加载源失败。 | 
属性文档
audioDevice : QAudioDevice
返回QAudioDevice实例。
访问函数
| QAudioDevice | audioDevice() | 
| void | setAudioDevice(const QAudioDevice &device) | 
通知信号
| void | audioDeviceChanged() | 
loops : int
此属性持有声音播放的次数。值为0或1表示只播放一次;设置为SoundEffect.Infinite以启用无限循环。
在声音效果播放时可以更改此值,在这种情况下,它将更新剩余循环数到新值。
访问函数
| int | loopCount() const | 
| void | setLoopCount(int loopCount) | 
通知信号
| void | loopCountChanged() | 
[只读] loopsRemaining : const int
此属性包含在声音效果自动停止之前的剩余循环次数,或在loops中设置QSoundEffect::Infinite如果已设置。
访问函数
| int | loopsRemaining() const | 
通知信号
| void | 剩余循环变化() | 
muted : bool
此属性提供了控制静音的途径。值为true将静音此效果。
访问函数
通知信号
| void | 静音变化() | 
[只读] playing : const bool
此属性表示声音效果是否正在播放。
访问函数
| bool | isPlaying() const | 
通知信号
| void | 播放状态变化() | 
source : QUrl
此属性包含要播放的声音的URL。对于SoundEffect尝试加载源,URL必须存在,并且应用程序必须在指定的目录中有读取权限。
访问函数
通知信号
| void | 源变化() | 
[只读] status : const Status
此属性表示声音效果的当前状态,从QSoundEffect::Status枚举。
访问函数
| QSoundEffect::Status | status() const | 
通知信号
| void | 状态变化() | 
volume : float
此属性包含声音效果播放的音量,从0.0(静音)到1.0(全音量)。
访问函数
通知信号
| 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 公司的商标。所有其他商标均为其各自所有者的财产。