En esta página

QSoundEffect Class

La clase QSoundEffect proporciona una forma de reproducir efectos de sonido de baja latencia. Más...

Cabecera: #include <QSoundEffect>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
En QML: SoundEffect
Hereda: QObject

Tipos públicos

enum Loop { Infinite }
enum Status { Null, Loading, Ready, Error }

Propiedades

Funciones públicas

QSoundEffect(QObject *parent = nullptr)
QSoundEffect(const QAudioDevice &audioDevice, QObject *parent = nullptr)
virtual ~QSoundEffect() override
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

Ranuras públicas

void play()
void stop()

Señales

Miembros públicos estáticos

QStringList supportedMimeTypes()

Descripción detallada

Esta clase permite reproducir archivos de audio sin comprimir (normalmente archivos WAV) de una forma generalmente de baja latencia, y es adecuada para sonidos de tipo "feedback" en respuesta a acciones del usuario (por ejemplo, sonidos de teclado virtual, feedback positivo o negativo para diálogos emergentes, o sonidos de juegos). Si la baja latencia no es importante, considere utilizar la clase QMediaPlayer en su lugar, ya que admite una mayor variedad de formatos multimedia y consume menos recursos.

Este ejemplo muestra cómo puede reproducirse un efecto de sonido en bucle y algo silencioso:

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

Normalmente, el efecto de sonido debe reutilizarse, lo que permite que todo el análisis sintáctico y la preparación se realicen con antelación y sólo se activen cuando sea necesario. Esto ayuda a reducir la latencia de la reproducción de audio.

    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;

Dado que QSoundEffect requiere un poco más de recursos para lograr una reproducción de baja latencia, la plataforma puede limitar el número de efectos de sonido que se reproducen simultáneamente.

Documentación de tipos de miembros

enum QSoundEffect::Loop

ConstanteValorDescripción
QSoundEffect::Infinite-2Se utiliza como parámetro de setLoopCount() para bucles infinitos.

enum QSoundEffect::Status

ConstanteValorDescripción
QSoundEffect::Null0No se ha establecido ninguna fuente o la fuente es nula.
QSoundEffect::Loading1SoundEffect está intentando cargar la fuente.
QSoundEffect::Ready2La fuente está cargada y lista para reproducirse.
QSoundEffect::Error3Se ha producido un error durante la operación, como un fallo al cargar la fuente.

Documentación de propiedades

audioDevice : QAudioDevice

Devuelve la instancia QAudioDevice.

Funciones de acceso:

QAudioDevice audioDevice()
void setAudioDevice(const QAudioDevice &device)

Señal del notificador:

void audioDeviceChanged()

loops : int

Esta propiedad contiene el número de veces que se reproduce el sonido. Un valor de 0 o 1 significa que el sonido sólo se reproducirá una vez; establezca SoundEffect.Infinite para habilitar bucles infinitos.

El valor puede cambiarse mientras el efecto de sonido se está reproduciendo, en cuyo caso actualizará los bucles restantes al nuevo valor.

Funciones de acceso:

int loopCount() const
void setLoopCount(int loopCount)

Señal de aviso:

[read-only] loopsRemaining : int

Esta propiedad contiene el número de bucles restantes antes de que el efecto de sonido se detenga por sí mismo, o QSoundEffect::Infinite si eso es lo que se ha establecido en loops.

Funciones de acceso:

int loopsRemaining() const

Señal del notificador:

muted : bool

Esta propiedad permite controlar el silenciamiento. Un valor de true silenciará este efecto.

Funciones de acceso:

bool isMuted() const
void setMuted(bool muted)

Señal del notificador:

void mutedChanged()

[read-only] playing : bool

Esta propiedad indica si el efecto de sonido se está reproduciendo o no.

Funciones de acceso:

bool isPlaying() const

Señal del notificador:

source : QUrl

Esta propiedad contiene la url del sonido a reproducir. Para que SoundEffect intente cargar la fuente, la URL debe existir y la aplicación debe tener permiso de lectura en el directorio especificado.

Funciones de acceso:

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

Señal del notificador:

void sourceChanged()

[read-only] status : Status

Esta propiedad indica el estado actual del efecto de sonido de la enumeración QSoundEffect::Status.

Funciones de acceso:

QSoundEffect::Status status() const

Señal del notificador:

void statusChanged()

volume : float

Esta propiedad contiene el volumen de reproducción del efecto de sonido, de 0.0 (silencio) a 1.0 (volumen máximo).

Funciones de acceso:

float volume() const
void setVolume(float volume)

Señal del notificador:

void volumeChanged()

Documentación de funciones miembro

[explicit] QSoundEffect::QSoundEffect(QObject *parent = nullptr)

Crea un QSoundEffect con la dirección parent.

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

Crea un QSoundEffect con los datos audioDevice y parent.

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

Destruye este efecto de sonido.

bool QSoundEffect::isLoaded() const

Devuelve si el efecto de sonido ha terminado de cargar source().

bool QSoundEffect::isMuted() const

Devuelve si este efecto de sonido está silenciado

Nota: Función Getter para la propiedad muted.

bool QSoundEffect::isPlaying() const

Devuelve true si el efecto de sonido se está reproduciendo actualmente, o false en caso contrario

Nota: Función Getter para la propiedad playing.

[signal] void QSoundEffect::loadedChanged()

La señal loadedChanged se emite cuando el estado de carga ha cambiado.

int QSoundEffect::loopCount() const

Devuelve el número total de veces que se reproducirá este efecto de sonido antes de detenerse.

Consulte el método loopsRemaining() para conocer el número de bucles restantes.

Nota: Función Getter para la propiedad loops.

Véase también setLoopCount().

[signal] void QSoundEffect::loopCountChanged()

La señal loopCountChanged se emite cuando el número inicial de bucles ha cambiado.

Nota: Señal notificadora para la propiedad loops.

[signal] void QSoundEffect::loopsRemainingChanged()

La señal loopsRemainingChanged se emite cuando el número restante de bucles ha cambiado.

Nota: Señal notificadora para la propiedad loopsRemaining.

[signal] void QSoundEffect::mutedChanged()

La señal mutedChanged se emite cuando el estado de silencio ha cambiado.

Nota: Señal notificadora para la propiedad muted.

[slot] void QSoundEffect::play()

Inicia la reproducción del efecto de sonido, reproduciéndolo en bucle el número de veces especificado en la propiedad loops.

[signal] void QSoundEffect::playingChanged()

La señal playingChanged se emite cuando la propiedad de reproducción ha cambiado.

Nota: Señal notificadora para la propiedad playing.

void QSoundEffect::setLoopCount(int loopCount)

Establece el número total de veces que se reproducirá este efecto de sonido en loopCount.

Establecer el recuento de bucles en 0 o 1 significa que el efecto de sonido se reproducirá sólo una vez; pasa QSoundEffect::Infinite para que se repita indefinidamente. La cuenta de bucles puede cambiarse mientras se reproduce el efecto de sonido, en cuyo caso actualizará los bucles restantes al nuevo loopCount.

Nota: Función Setter para la propiedad loops.

Véase también loopCount() y loopsRemaining().

void QSoundEffect::setMuted(bool muted)

Establece si se silencia la reproducción de este efecto de sonido.

Si muted es verdadero, la reproducción será silenciada (muteada), y en caso contrario la reproducción se producirá con el valor actualmente especificado volume().

Nota: Función Setter para la propiedad muted.

Véase también isMuted().

void QSoundEffect::setSource(const QUrl &url)

Establece la URL actual a reproducir en url.

Nota: Función Setter para la propiedad source.

Véase también source().

void QSoundEffect::setVolume(float volume)

Establece el volumen del efecto de sonido en volume.

El volumen se escala linealmente de 0.0 (silencio) a 1.0 (volumen máximo). Los valores que queden fuera de este rango se bloquearán.

El volumen por defecto es 1.0.

Normalmente, los controles de volumen de la interfaz de usuario deben escalarse de forma no lineal. Por ejemplo, utilizar una escala logarítmica producirá cambios lineales en el volumen percibido, que es lo que un usuario esperaría normalmente de un control de volumen. Consulte QtAudio::convertVolume() para obtener más información.

Nota: Función Setter para la propiedad volume.

Véase también volume().

QUrl QSoundEffect::source() const

Devuelve la URL de la fuente actual a reproducir

Nota: Función Getter para la propiedad source.

Véase también setSource().

[signal] void QSoundEffect::sourceChanged()

La señal sourceChanged se emite cuando se ha cambiado la fuente.

Nota: Señal notificadora para la propiedad source.

QSoundEffect::Status QSoundEffect::status() const

Devuelve el estado actual de este efecto de sonido.

Nota: Función Getter para el estado de la propiedad.

[signal] void QSoundEffect::statusChanged()

La señal statusChanged se emite cuando la propiedad de estado ha cambiado.

Nota: Señal notificadora para la propiedad status.

[slot] void QSoundEffect::stop()

Detener la reproducción actual.

[static] QStringList QSoundEffect::supportedMimeTypes()

Devuelve una lista de los tipos mime soportados para esta plataforma.

float QSoundEffect::volume() const

Devuelve el volumen actual de este efecto de sonido, de 0.0 (silencio) a 1.0 (volumen máximo).

Nota: Función Getter para la propiedad volumen.

Véase también setVolume().

[signal] void QSoundEffect::volumeChanged()

La señal volumeChanged se emite cuando el volumen ha cambiado.

Nota: Señal notificadora para la propiedad volume.

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