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 。距离小于尺寸时音量恒定,距离大于截止距离时音量为零。

访问功能:

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)

Notifier 信号:

void volumeChanged()

成员函数 文档

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

engine 创建空间声源。物体可以放置在三维空间中,离听众越近,声音越大。

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

摧毁声源。

QAudioEngine *QSpatialSound::engine() const

返回与此监听器相关的引擎。

[slot] void QSpatialSound::pause()

暂停声音播放。呼叫play() 将继续播放。

[slot] void QSpatialSound::play()

开始播放声音。如果声音已在播放,则不起任何作用。

[slot] void QSpatialSound::stop()

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

© 2025 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.