Qt多媒体模块QMediaPlayer

Qt 项目中.pro 文件.h 文件 .cpp 文件各自的作用:
.pro 文件:这是 Qt 项目文件,它包含了项目需要的所有信息,例如项目中包含哪些源文件、需要哪些库以及项目的其他配置信息等。可以把它理解为项目的配置和说明文件。

.h 文件:这是头文件,也叫做头文件。它们包含了类的声明和一些你希望在多个源文件中共享的函数、变量的声明。在这些头文件中,常常包括一些 #define 指令(用于定义常量)和其他类型的配置信息。

.cpp 文件:这些是源文件,它们包含了程序中的函数和类的实现。

main.cpp:该文件通常包含 main() 函数,这是所有 C++ 程序的入口点。在 Qt 应用程序中,main() 函数通常会创建一个 QApplication 对象和你自定义的窗口或对话框对象,然后开始消息循环。

mainwindow.cpp:如果应用程序使用了一个主窗口,那么这个文件就会包含 MainWindow 类的实现。主要的窗口布局和部件创建以及信号-槽的连接等操作都通常在这里进行。


.pro文件:

cpp 复制代码
QT       += core gui widgets
# 添加对Qt核心模块、图形用户界面模块和小部件模块的支持
# core模块提供了Qt的基本的非GUI功能,如信号和槽机制、基本的数据类型、集合类等
# gui模块提供了Qt的GUI功能,如窗口、事件处理、2D图形、字体和文本等
# widgets模块提供了Qt的UI元素,如按钮、文本框、菜单和其他窗口小部件
QT       += multimedia
# 添加对Qt多媒体模块的支持
# multimedia模块提供了音视频播放、录制和处理的功能,以及访问摄像头和收音机等硬件设备的能力

.h文件:

cpp 复制代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>            // 包含用于创建主窗口的库
#include <QTextEdit>              // 包含用于创建文本编辑器的库
#include <QPushButton>            // 包含用于创建按钮的库

class QMediaPlayer;  //添加QMediaPlayer的前向声明

// MainWindow 类的定义
class MainWindow : public QMainWindow
{
    Q_OBJECT  // 使用Q_OBJECT宏,使当前类支持Qt特性如信号和槽

public:
    MainWindow(QWidget *parent = nullptr); // 主窗口的构造函数
    ~MainWindow();  // 主窗口的析构函数

// 私有槽函数声明
private slots:
    void onButtonClicked();  // 当按钮点击时执行的槽函数

// 私有成员声明
private:
    QMediaPlayer *player; // 声明一个QMediaPlayer的指针,用于播放音频
    QPushButton *button;  // 声明一个按钮,用户可以通过点击它来触发运行某些操作
    QTextEdit *textEdit;  // 声明一个文本编辑器,可以显示和编辑文本
};

#endif // MAINWINDOW_H  // 结束预处理器的条件编译

mainwindow.cpp文件:

cpp 复制代码
#include <QDebug>
#include "mainwindow.h"
#include <QVBoxLayout>
#include <QMediaPlayer>

// 主窗口的构造函数
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent),  // 调用基类的构造函数
      player(new QMediaPlayer(this)),  // 初始化音频播放器
      button(new QPushButton("Click Me!")),  // 初始化用于点击的按钮
      textEdit(new QTextEdit())  // 初始化文本编辑器
{
    // 设置音频播放器的音频文件来源
    player->setMedia(QUrl::fromLocalFile("E:/suoche.wav"));
    // 连接按钮的点击信号到槽函数 onButtonClicked
    connect(button, &QPushButton::clicked, this, &MainWindow::onButtonClicked);

    // 创建用于主窗口的中心部件和布局管理器
    QWidget *centralWidget = new QWidget(this);
    QVBoxLayout *layout = new QVBoxLayout(centralWidget);

    // 将按钮和文本编辑器添加到布局
    layout->addWidget(button);
    layout->addWidget(textEdit);

    // 设置中心窗口部件
    this->setCentralWidget(centralWidget);
}

// 主窗口的析构函数
MainWindow::~MainWindow()
{
    // 删除按钮和文本编辑器
    delete button;
    delete textEdit;
}

// 点击按钮时执行的槽函数
void MainWindow::onButtonClicked()
{
    // 如果音频正在播放,则暂停音频
    if(player->state() == QMediaPlayer::PlayingState)
    {
        player->pause();
    }else{
         // 否则播放音频
        player->play();
    }
    // 在文本编辑器中添加一行文本
    textEdit->append("锁车完成");

}

main.cpp文件:

cpp 复制代码
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}
相关推荐
Mr.Q20 分钟前
Qt多边形填充/不填充绘制
qt
萧鼎39 分钟前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸40 分钟前
【一些关于Python的信息和帮助】
开发语言·python
疯一样的码农41 分钟前
Python 继承、多态、封装、抽象
开发语言·python
^velpro^41 分钟前
数据库连接池的创建
java·开发语言·数据库
秋の花1 小时前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端1 小时前
第六章 7.0 LinkList
java·开发语言·网络
可峰科技1 小时前
斗破QT编程入门系列之二:认识Qt:编写一个HelloWorld程序(四星斗师)
开发语言·qt
全栈开发圈1 小时前
新书速览|Java网络爬虫精解与实践
java·开发语言·爬虫
面试鸭1 小时前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展