本页内容

QSpatialSound Class

三维空间中的声音对象。更多内容...

标题: #include <QSpatialSound>
CMake: find_package(Qt6 REQUIRED COMPONENTS SpatialAudio)
target_link_libraries(mytarget PRIVATE Qt6::SpatialAudio)
qmake: QT += spatialaudio
继承自: QObject

公共类型

enum class DistanceModel { Logarithmic, Linear, ManualAttenuation }
enum Loops { Infinite, Once }

属性

公共函数

QSpatialSound(QAudioEngine *engine)
virtual ~QSpatialSound() override
bool autoPlay() const
float directivity() const
float directivityOrder() const
float distanceCutoff() const
QSpatialSound::DistanceModel distanceModel() const
QAudioEngine *engine() const
int loops() const
float manualAttenuation() const
float nearFieldGain() const
float occlusionIntensity() const
QVector3D position() const
QQuaternion rotation() const
void setAutoPlay(bool autoPlay)
void setDirectivity(float alpha)
void setDirectivityOrder(float alpha)
void setDistanceCutoff(float cutoff)
void setDistanceModel(QSpatialSound::DistanceModel model)
void setLoops(int loops)
void setManualAttenuation(float attenuation)
void setNearFieldGain(float gain)
void setOcclusionIntensity(float occlusion)
void setPosition(QVector3D pos)
void setRotation(const QQuaternion &q)
void setSize(float size)
void setSource(const QUrl &url)
void setVolume(float volume)
float size() const
QUrl source() const
float volume() const

公共槽位

void pause()
void play()
void stop()

信号

详细说明

QSpatialSound 表示三维空间中的可听对象。您可以定义其在空间中的位置和方向,设置其正在播放的声音,并为该对象设定音量。

该对象可以具有不同的衰减行为,主要朝一个方向或球面方向发声,并表现得仿佛被其他对象遮挡一样。

成员类型文档

enum class QSpatialSound::DistanceModel

定义声音音量随与听众距离的变化而变化的规律。

常数值描述
QSpatialSound::DistanceModel::Logarithmic0音量随距离呈对数递减。
QSpatialSound::DistanceModel::Linear1音量随距离呈线性递减。
QSpatialSound::DistanceModel::ManualAttenuation2衰减是通过manualAttenuation 属性手动定义的。

enum QSpatialSound::Loops

允许您使用以下值控制声音播放循环:

常量值描述
QSpatialSound::Infinite-1无限循环播放
QSpatialSound::Once1播放一次

属性文档

autoPlay : bool

确定在指定音源时,声音是否应自动开始播放。

默认值为true 。

访问函数:

bool autoPlay() const
void setAutoPlay(bool autoPlay)

通知信号:

void autoPlayChanged()

directivity : float

定义声源的方向性。值为 0 表示声音向各个方向均匀发射,而值为 1 表示声源主要向前方发射声音。

有效值范围为0到1,默认值为0。

访问函数:

float directivity() const
void setDirectivity(float alpha)

通知信号:

void directivityChanged()

directivityOrder : float

定义声源指向性的阶数。阶数越高,声锥的定位越精准。

该属性的最小值和默认值为 1。

访问函数:

float directivityOrder() const
void setDirectivityOrder(float alpha)

通知信号:

void directivityOrderChanged()

distanceCutoff : float

定义了声源发出的声音在超过该距离后将被截断。如果听者与声源的距离超过了截断距离,则将无法再听到该声音。

访问函数:

float distanceCutoff() const
void setDistanceCutoff(float cutoff)

通知信号:

void distanceCutoffChanged()

distanceModel : DistanceModel

定义该声源的距离模型。音量从size 开始逐渐降低至distanceCutoff 。当距离小于size时,音量保持恒定;当距离大于截止距离时,音量为零。

访问函数:

QSpatialSound::DistanceModel distanceModel() const
void setDistanceModel(QSpatialSound::DistanceModel model)

通知信号:

void distanceModelChanged()

另请参阅 QSpatialSound::DistanceModel 。

loops : int

确定播放器停止前声音播放的次数。设置为QSpatialSound::Infinite 可让当前声音无限循环播放。

默认值为1 。

访问函数:

int loops() const
void setLoops(int loops)

通知信号:

void loopsChanged()

manualAttenuation : float

如果将“distanceModel ”设置为“QSpatialSound::DistanceModel::ManualAttenuation ”,则定义一个手动衰减因子。

访问函数:

float manualAttenuation() const
void setManualAttenuation(float attenuation)

通知信号:

void manualAttenuationChanged()

nearFieldGain : float

定义声源的近场增益。有效值范围为 0 到 1。当距离听众非常近时,近场增益为 1 会将声音信号的音量提高约 20 dB。

访问功能:

float nearFieldGain() const
void setNearFieldGain(float gain)

通知信号:

void nearFieldGainChanged()

occlusionIntensity : float

定义物体被遮挡的程度。0 表示物体完全未被遮挡,1 表示声源被另一个物体完全遮挡。

完全被遮挡的物体仍然可以被听到,但高频成分会受到显著衰减。此外,该物体仍会参与产生房间内的混响和反射声。

可以设置大于 1 的数值,以进一步衰减来自声源的直达声。

默认值为 0。

访问函数:

float occlusionIntensity() const
void setOcclusionIntensity(float occlusion)

通知信号:

void occlusionIntensityChanged()

position : QVector3D

定义声源在三维空间中的位置。默认单位为厘米。

访问函数:

QVector3D position() const
void setPosition(QVector3D pos)

通知信号:

void positionChanged()

另请参阅 QAudioEngine::distanceScale 。

rotation : QQuaternion

定义声源在三维空间中的方向。

访问函数:

QQuaternion rotation() const
void setRotation(const QQuaternion &q)

通知信号:

void rotationChanged()

size : float

定义声源的大小。如果听者距离声源的距离小于该大小,音量将保持不变。该大小还用于遮挡计算,其中较大的声源可能会被墙壁部分遮挡。

访问函数:

float size() const
void setSize(float size)

通知信号:

void sizeChanged()

source : QUrl

要播放的音频的源文件。

访问函数:

QUrl source() const
void setSource(const QUrl &url)

通知信号:

void sourceChanged()

volume : float

用于设置声音的音量。

0 到 1 之间的数值会降低音量,而大于 1 的数值则会提供额外的增益提升。

访问函数:

float volume() const
void setVolume(float volume)

通知信号:

void volumeChanged()

成员函数文档

[explicit] QSpatialSound::QSpatialSound(QAudioEngine *engine)

为engine 创建一个空间声源。该对象可放置在3D空间中,距离听众越近,声音就越大。

注意: 调用时必须 传入一个有效的QAudioEngine

[override virtual noexcept] QSpatialSound::~QSpatialSound()

摧毁声源。

QAudioEngine *QSpatialSound::engine() const

返回与该监听器关联的引擎。

[slot] void QSpatialSound::pause()

暂停声音播放。调用play() 将继续播放。

[slot] void QSpatialSound::play()

开始播放声音。如果声音已经在播放,则不执行任何操作。

[slot] void QSpatialSound::stop()

停止声音播放,并将当前位置和当前循环次数重置为0。调用play() 将从声音文件的开头开始播放。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.