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 公司的商标。所有其他商标均为其各自所有者的财产。