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();
}
相关推荐
大白的编程日记.1 小时前
【计算机基础理论知识】C++篇(二)
开发语言·c++·学习
网小鱼的学习笔记1 小时前
python中MongoDB操作实践:查询文档、批量插入文档、更新文档、删除文档
开发语言·python·mongodb
Q_Q5110082851 小时前
python的保险业务管理与数据分析系统
开发语言·spring boot·python·django·flask·node.js·php
亮1111 小时前
Maven 编译过程中发生了 Java Heap Space 内存溢出(OutOfMemoryError)
java·开发语言·maven
Chef_Chen1 小时前
从0开始学习R语言--Day40--Kruskal-Wallis检验
开发语言·学习·r语言
Zhu_S W1 小时前
深入理解Java虚拟机:Java内存区域与内存溢出异常
java·开发语言·jvm
灰海1 小时前
原型与原型链到底是什么?
开发语言·前端·javascript·es6·原型模式·原生js
TechNomad2 小时前
Qt开发:QtConcurrent介绍和使用
qt
鸡蛋灌Bean2 小时前
Java常用设计模式大全
java·开发语言·设计模式
钮钴禄·爱因斯晨2 小时前
C语言 | 函数核心机制深度解构:从底层架构到工程化实践
c语言·开发语言·数据结构