本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!