在 Qt 中,音频主要是通过 QSound 类来实现。但是需要注意的是 QSound 类只支持播放 wav 格式的音频文件。也就是说如果想要添加音频效果,那么首先需要将非 wav 格式的音频文件转换为 wav 格式。
通过帮助手册查看 QSound 类如下:
注意:使用 QSound 类时,需要添加模块:multimedia
核心 API :
1 |
play() 开始或继续播放当前源 |
示例代码:
1、首先在 .pro 文件中加入模块:
2、界面如下:
3、引入声音文件:
4、widget.cpp 文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <QSound>
Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this);
// 实例化对象 QSound* sound = new QSound(":/sound.wav", this);
connect(ui->pushButton, &QPushButton::clicked, [=](){ sound->play(); // 播放 }); } |
在 Qt 中,视频播放的功能主要是通过 QMediaPlayer 类和 QVideoWidget 类来实现。在使用这两个类时要添加对应的模块 multimedia 和 multimediawidgets.
核心 API:
setMedia() 设置当前媒体源。
setVideoOutput() 将QVideoWidget视频输出附加到媒体播放器。如果媒体播放器已经附加了视频输出,将更换?个新的。
示例代码:
1、首先在 .pro 文件中添加模块:
2、widget.h 程序如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
#include <QWidget> #include <QHBoxLayout> // 水平布局 #include <QVBoxLayout> // 垂直布局 #include <QVideoWidget> // 显示视频 #include <QMediaPlayer> // 播放声音 #include <QPushButton> // 按钮 #include <QStyle> // 设置图标 #include <QFileDialog> // 选择文件/文件夹
QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE
class Widget : public QWidget { Q_OBJECT
public: Widget(QWidget *parent = nullptr); ~Widget();
public slots: void closeVideo();
private: QMediaPlayer* mediaPlayer; QVideoWidget* videoWidget; QVBoxLayout* vbox;
// 创建两个按钮:选择视频按钮和开播放按钮 QPushButton* chooseBtn, *playBtn;
private: Ui::Widget *ui; }; |
3、widget.cpp 程序如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
#include <QMediaPlayer> #include <QSlider>
Widget::Widget(QWidget *parent) : QWidget(parent) { // 对象实例化 mediaPlayer = new QMediaPlayer(this); videoWidget = new QVideoWidget(this);
// 设置播放画面的窗口 videoWidget->setMinimumSize(600, 600);
// 实例化窗口布局 --- 垂直布局 this->vbox = new QVBoxLayout(this); this->setLayout(this->vbox);
// 实例化选择视频按钮 chooseBtn = new QPushButton("选择视频", this);
// 实例化播放按钮 playBtn = new QPushButton(this);
// 设置图标代替文件 playBtn->setIcon(this->style()->standardIcon(QStyle::SP_MediaPlay));
// 实例化一个水平布局,将以上控件放入水平布局中 QHBoxLayout* hbox = new QHBoxLayout;
// 添加控件 hbox->addWidget(chooseBtn); hbox->addWidget(playBtn);
// 将播放窗口和水平布局都添加到垂直布局中 vbox->addWidget(videoWidget);
// 布局中添加布局 vbox->addLayout(hbox);
// 将选择视频对应的按钮和槽函数进行关联 connect(chooseBtn, &QPushButton::clicked, this, &Widget::chooseVideo); }
void Widget::chooseVideo() { // 选择视频,返回一个播放视频的名字 QString name = QFileDialog::getSaveFileName(this, "选择视频", ".", "WMV(*.wmv)");
// 设置媒体声音 mediaPlayer->setMedia(QUrl(name));
// 输出视频画面 mediaPlayer->setVideoOutput(videoWidget);
// 播放 mediaPlayer->play(); } |