南京最大网站建设公司网站备案号怎么看
Qt 音频
在 Qt 中,音频主要是通过 QSound 类来实现。但需要注意,QSound 类只支持播放 wav 格式的音频文件。若要添加音频效果,需先将非 wav 格式的音频文件转换为 wav 格式。
💡 注意:使用 QSound 类时,需要添加模块:multimedia
。
核心 API 概览
API | 功能描述 |
---|---|
play() | 开始或继续播放当前源。 |
示例
/******************************* SoundTest.pro *******************************/
QT += core gui multimedia // 添加音频模块/******************************* widget.cpp *******************************/
#include "widget.h"
#include "ui_widget.h"
#include <QSound> // 添加音频头文件Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 实例化对象QSound *sound = new QSound(":/1.wav",this);connect(ui->btn,&QPushButton::clicked,[=](){sound->play(); // 播放});
}Widget::~Widget()
{delete ui;
}
Qt 视频
在 Qt 中,视频播放功能主要通过 QMediaPlayer 类和 VideoWidget 类实现。使用这两个类时,要添加对应模块 multimedia
和 multimediawidgets
。
核心 API 概览
API | 功能描述 |
---|---|
setMedia() | 设置当前媒体源。 |
setVideoOutput() | 将 QVideoWidget 视频输出附加到媒体播放器。若媒体播放器已附加视频输出,将更换一个新的。 |
示例
首先在 .pro
文件中添加 multimedia
和 multimediawidgets
两个模块,如下:
/******************************* widget.h *******************************/
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QHBoxLayout> // 水平布局
#include <QVBoxLayout> // 垂直布局
#include <QVideoWidget> // 显示视频
#include <QMediaPlayer> // 播放声音
#include <QPushButton> // 按钮
#include <QStyle> // 设置图标
#include <QFileDialog> // 选择文件/文件夹class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();public slots:void chooseVideo();private:QMediaPlayer *mediaPlayer;QVideoWidget *videoWidget;QVBoxLayout *vbox;// 创建两个按钮:选择视频按钮和开始播放按钮QPushButton chooseBtn,playBtn;
};#endif // WIDGET_H/******************************* widget.cpp *******************************/
#include "widget.h"
#include "ui_widget.h"
#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();
}Widget::~Widget()
{
}