Qt学习 之 音乐播放器(加载本地视频、播放、暂停、移动滑块)

.pro文件:

#-------------------------------------------------
#
# Project created by QtCreator 2018-07-21T15:46:29
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = QTplayer
TEMPLATE = app

QT += multimedia
QT += multimediawidgets
QT += network

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

RESOURCES += \
    qtplayer.qrc

DISTFILES += \
    image/openfile.png

1、ui界面布局:
在这里插入图片描述
2、.h文件:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMediaPlayer>
#include <QVideoWidget>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QMediaPlayer *mediaPlayer;
    void Init();

private slots:
    void play();//播放
    void mediaStateChanged(QMediaPlayer::State state);//播放状态
    void positionChanged(qint64 position);//改变播放位置
    void setPosition(int position);//获取播放位置
    void durationChanged(qint64 duration);//播放长度
    void handleError();//播放异常的抛出

    void on_toolButton_clicked();
    void on_horizontalSlider_sliderMoved(int position);
    void on_toolButton_2_clicked();
};

#endif // MAINWINDOW_H

3、.cpp文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QPixmap>
#include<QFrame>
#include<QHBoxLayout>
#include<QFileDialog>
#include<QString>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    Init();
}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::Init()
{
    //创建mediaPlayer
    mediaPlayer = new QMediaPlayer(this);
    //设置mediaPlayer的QVideoWidget播放窗口
    mediaPlayer->setVideoOutput(ui->widget);


    ui->widget->setAutoFillBackground(true);
    QPalette qplte;
    qplte.setColor(QPalette::Window, QColor(0,0,0));
    ui->widget->setPalette(qplte);

    //设置播放属性
    //1 监听信号变化函数
    connect(mediaPlayer,SIGNAL(stateChanged(QMediaPlayer::State)),this,SLOT(mediaStateChanged(QMediaPlayer::State)));
    //2 播放进度信号变化函数
    connect(mediaPlayer,SIGNAL(positionChanged(qint64)),this,SLOT(positionChanged(qint64)));
    //3 播放长度信号变化
    connect(mediaPlayer,SIGNAL(durationChanged(qint64)),this,SLOT(durationChanged(qint64)));
    //4 设置播放错误关联
    connect(mediaPlayer,SIGNAL(error(QMediaPlayer::Error)),this,SLOT(handleError()));
    


    //设置播放按钮
    ui->toolButton->setToolTip(QString::fromLocal8Bit("播放"));//设置鼠标点上去提示
    ui->toolButton->setIconSize(QSize(75,75));

    //设置打开文件按钮
    ui->toolButton_2->setToolTip(QString::fromLocal8Bit("打开文件"));
    ui->toolButton_2->setAutoRaise(true);//设置自动获取状态
    ui->toolButton_2->setIconSize(QSize(75,75));

    QHBoxLayout *hlayout = new QHBoxLayout(this);
    hlayout->addWidget(ui->toolButton);
    hlayout->addWidget(ui->horizontalSlider);
    hlayout->addWidget(ui->toolButton_2);
}

void MainWindow::play()
{
    switch (mediaPlayer->state()) {
    case QMediaPlayer::PlayingState:
        mediaPlayer->pause();
        break;
    default:
        mediaPlayer->play();
        break;
    }
}

void MainWindow::on_toolButton_clicked()
{
    play();
}
void MainWindow::mediaStateChanged(QMediaPlayer::State state)
{
    //mediaPlayer播放过程中动态调整播放进度
    switch (state) {
    case QMediaPlayer::PlayingState:
        ui->toolButton->setToolTip(QString::fromLocal8Bit("暂停"));
        break;
    default:
        ui->toolButton->setToolTip(QString::fromLocal8Bit("播放"));
        break;
    }

}
void MainWindow::positionChanged(qint64 position)
{
    //改变播放位置
    ui->horizontalSlider->setValue(position);

}
void MainWindow::setPosition(int position)
{
    //获取mediaPlayer进度条调整位置
    mediaPlayer->setPosition(position);

}
void MainWindow::durationChanged(qint64 duration)
{
    //获取进度条的范围
    ui->horizontalSlider->setRange(0,duration);

}

void MainWindow::on_horizontalSlider_sliderMoved(int position)
{
    setPosition(position);
}
void MainWindow::handleError()
{
    ui->toolButton->setEnabled(false);
}

void MainWindow::on_toolButton_2_clicked()
{
    QString filename = QFileDialog::getOpenFileName(this,QString::fromLocal8Bit("打开视频"),"G:/",tr("*.wmv *.avi"));
    //设置播放内容
    mediaPlayer->setMedia(QUrl::fromLocalFile(filename));
    ui->toolButton->setAutoRaise(true);
}

结果显示:
在这里插入图片描述
在这里插入图片描述

PS:附上自己下载的链接:链接中有图片,我给删除了
https://download.csdn.net/download/weixin_41822958/10557334

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要编译一个视频播放器,首先需要安装Qt 6的开发环境。然后可以按照以下步骤进行操作: 1. 创建一个新的Qt项目,选择桌面应用程序。 2. 在项目中添加Qt Multimedia模块,这个模块包含了视频播放所需的类和函数。 3. 在主窗口中添加一个QMediaPlayer对象,并调用setMedia()函数来设置要播放视频文件路径。 4. 添加一个QVideoWidget对象,这个对象用来显示视频画面。将QVideoWidget对象设置为QMediaPlayer对象的输出设备,可以通过调用setVideoOutput()函数来实现。 5. 添加一些控制按钮,比如播放暂停、停止、快进、快退等,这些按钮通过调用QMediaPlayer对象的相应函数来实现。 6. 编译并运行程序,测试其播放本地视频的功能。 下面是一个示例代码: ```cpp #include <QtWidgets> #include <QtMultimedia> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWidget window; QVBoxLayout *layout = new QVBoxLayout(&window); QMediaPlayer *player = new QMediaPlayer; QVideoWidget *videoWidget = new QVideoWidget; player->setVideoOutput(videoWidget); QPushButton *playButton = new QPushButton("Play"); QObject::connect(playButton, &QPushButton::clicked, player, &QMediaPlayer::play); QPushButton *pauseButton = new QPushButton("Pause"); QObject::connect(pauseButton, &QPushButton::clicked, player, &QMediaPlayer::pause); QPushButton *stopButton = new QPushButton("Stop"); QObject::connect(stopButton, &QPushButton::clicked, player, &QMediaPlayer::stop); QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addWidget(playButton); buttonLayout->addWidget(pauseButton); buttonLayout->addWidget(stopButton); layout->addWidget(videoWidget); layout->addLayout(buttonLayout); player->setMedia(QUrl::fromLocalFile("/path/to/video/file.mp4")); window.show(); return app.exec(); } ``` 注意,本示例中需要将"/path/to/video/file.mp4"替换为你要播放视频文件路径。 ### 回答2: 要编译一个能够播放本地视频Qt6视频播放器,可以按照以下的步骤进行操作: 1. 首先,需要在Qt软件包管理器中安装Qt6的开发工具及相关的多媒体模块。 2. 在Qt Creator中创建一个新的Qt Quick应用程序项目。 3. 在Qt Quick应用程序项目中,添加一个视频播放器的主窗口组件,可以使用Qt Quick Controls来简化界面设计。 4. 为视频播放器主窗口添加一个QMediaPlayer对象,用于管理视频播放。 5. 在QMediaPlayer对象中设置视频源,可以通过选择本地视频文件的方式或者设置文件路径的方式来指定视频源。 6. 在主窗口组件中,添加用于播放控制的按钮,如播放暂停、停止等。 7. 在按钮的点击事件处理函数中,调用对应的QMediaPlayer函数来实现视频播放控制的功能。 8. 可以根据需要,为视频播放器添加额外的功能,如音量控制、视频进度条、全屏播放等。 9. 运行程序,将会出现视频播放器的界面。可以通过点击按钮来控制视频播放暂停和停止。 10. 在程序运行中,如果想要切换不同的本地视频文件进行播放,可以添加一个文件选择对话框,让用户能够选择要播放视频文件。 以上是一个基本的步骤,当然在实际编码过程中还可能会遇到其他具体的问题,需要根据情况进行调试和解决。编译成功后,就可以使用Qt6编译的视频播放器播放本地视频了。 ### 回答3: 要编译一个基于Qt6的视频播放器播放本地视频,你可以按照以下步骤进行: 步骤1:准备工作 首先,确保你已经安装了Qt6开发环境,并且已经配置好了开发环境的路径。你可以从Qt官方网站下载并安装最新的Qt开发环境。 步骤2:创建Qt项目 打开Qt开发环境,点击"新建项目"按钮,选择"应用程序",然后选择"Qt Widgets 应用"。输入项目名称,选择存储位置,并点击"下一步"。 步骤3:设计播放器界面 在Qt设计器中,你可以设计你的播放器界面。可以添加一个视频播放区域、播放按钮、暂停按钮、停止按钮等控件,并为这些控件添加相应的信号和槽。 步骤4:添加视频播放功能 在Qt编程界面,你可以通过使用Qt提供的Multimedia模块来实现视频播放功能。你可以使用QMediaPlayer类来加载播放本地视频文件。在槽函数中,你可以使用QMediaPlayer的相应函数来控制视频播放暂停和停止。 步骤5:编译和运行 完成上述步骤后,你可以点击Qt开发环境中的"运行"按钮来编译和运行你的项目。你应该能够看到你设计的播放器界面,并且能够播放本地视频文件。 总结: 通过上述步骤,你可以使用Qt6来编译一个视频播放器,用于播放本地视频。你需要在Qt开发环境中创建一个新的项目,设计播放器界面,并使用Qt的Multimedia模块来添加视频播放功能。最后,编译和运行你的项目,就可以播放本地视频了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值