QT设置音效QSoundEffect播放音频文件wav

2023-10-20 04:50

本文主要是介绍QT设置音效QSoundEffect播放音频文件wav,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

QT设置音效QSoundEffect播放wav

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSoundEffect>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);effect=new QSoundEffect(this);// effect->setSource(QUrl::fromLocalFile("../mysoundeffect/test2.wav"));effect->setSource(QUrl::fromLocalFile("../test2a.wav"));effect->setVolume(0.25f);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_play_clicked()
{effect->play();
}void MainWindow::on_pushButton_stop_clicked()
{effect->stop();
}void MainWindow::on_spinBox_valueChanged(int arg1)
{effect->setLoopCount(arg1);
}

Qt5使用全新Qt Multimedia模块来实现多媒体的应用。该模块分别提供了一组QML类型和一组C++类来处理多媒体内容。使用多媒体模块内容要在.pro项目文件中加如下代码

QT += multimedia
一、播放压缩音频
QMediaPlayer被设计用来进行媒体播放,可以播放音频、视频和网络广播等。使用其播放音频文件(如mp3文件)例子工程如下

新建Qt Widgets应用mediaplayer,保持默认选项,在项目文件中添加QT += multimedia

在mainwindow.h中添加类的前置声明

class QMediaPlayer;
再添加一个私有成员

QMediaPlayer* player;
        在构造文件中初始化player,并设置要播放的音频文件

   player=new QMediaPlayer;
    player->setMedia(QUrl::fromLocalFile("C:/Users/Administrator/Music/周深 - 大鱼.mp3"));
往界面文件中拖入两个pushbutton,分别控制播放音乐(play()接口)和停止播放音乐(stop()接口),其clicked函数实现如下。

void MainWindow::on_pushButton_clicked()
{
     player->play();
}
 
void MainWindow::on_pushButton_2_clicked()
{
    player->stop();
}
 不要忘记添加头文件

#include <QMediaPlayer>
#include <QUrl>
 

二、低延迟声音效果
QSoundEffect类可以使用一种低延迟方式来播放未压缩的音频文件,如WAV文件,它非常适合用来播放与用户交互的音频,如弹出提示框音、虚拟键盘按键音、游戏音效等。

继续在上述工程中添加代码,mainwindow.h头文件中添加QSoundEffect类的前置声明,以及该指针类型的私有成员变量

class QSoundEffect;
 QSoundEffect* effect;
mainwindow.cpp中添加头文件包含

#include <QSoundEffect>
构造函数中,实列化effect,并设置播放源文件以及音量

 effect=new QSoundEffect(this);
    effect->setSource(QUrl::fromLocalFile("C:/Windows/Media/Ring01.wav"));
    effect->setVolume(0.25f);
setVolume接口设置播放音量,参数取值范围0.0~1.0。

往ui文件中拖放两个pushbutton以及一个spin box,分别控制播放、停止以及循环播放次数代码如下

void MainWindow::on_pushButton_3_clicked()
{
    effect->play();
}
 
void MainWindow::on_pushButton_4_clicked()
{
    effect->stop();
}
 
void MainWindow::on_spinBox_valueChanged(int arg1)
{
    effect->setLoopCount(arg1);
}
setLoopCount()接口设置播放次数,0和1时表明只播放一次,QSoundEffect::Infinite表明无限重复。

连续点击播放按钮,会发现新的点击会被及时响应,上一次的播放被打断。
 

这篇关于QT设置音效QSoundEffect播放音频文件wav的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/244763

相关文章

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Qt中QGroupBox控件的实现

《Qt中QGroupBox控件的实现》QGroupBox是Qt框架中一个非常有用的控件,它主要用于组织和管理一组相关的控件,本文主要介绍了Qt中QGroupBox控件的实现,具有一定的参考价值,感兴趣... 目录引言一、基本属性二、常用方法2.1 构造函数 2.2 设置标题2.3 设置复选框模式2.4 是否

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间