基于QT5 QMediaPlayer实现的高清动态界面效果

先看看效果吧

传不了视频所以将就看图吧,代码在下面。
界面效果

获取王者荣耀视频和图标的方法

1.从网络获取,直接百度搜索即可,但是一般找不到高清资源

2.从王者荣耀的本地安装位置获取

首先准备一台安装了王者荣耀的安卓手机
打开文件管理,依次打开以下路径
Android–>data–>com.tencent.tmgp.sgame–>files–>Resources–>Game_Video
在这个文件夹内有王者高清原视频文件
Android–>data–>com.tencent.tmgp.sgame–>files–>Resources–>Map–>UIPics
这里是部分图标文件
把获取的文件发送给电脑,放到qt工程文件夹内

源码

先在.pro工程文件中添加语句:QT += multimedia multimediawidgets
添加之后才能使用QtMultiMedia类

由于图片和视频资源我还不会上传,所以下面代码中图片和视频的路径需要重新设置

firstwidget.h

#ifndef FIRSTWIDGET_H
#define FIRSTWIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QtGui/QMovie>
#include <QtMultimedia>
#include <QtMultimedia/QMediaPlayer>
#include <QtMultimedia/QMediaPlaylist>
#include <qvideowidget.h>
#include <QObject>
#include <QUrl>

class FirstWidget : public QWidget
{
    Q_OBJECT

public:
    FirstWidget(QWidget *parent = 0);
    ~FirstWidget();
private:
    QMediaPlayer *bg_player;//用来加载多媒体文件的类

    //两个按钮用于跳转
    QPushButton *visi_btn;
    QPushButton *user_btn;


public slots:
    //媒体状态改变时自动调用槽函数
    void mediaStateChanged(QMediaPlayer::State state);
    //跳转至游客窗口
    void visitWidget();
    //跳转至用户登录窗口
    void userWdget();


};

#endif // FIRSTWIDGET_H

firstwidget.cpp

#include "firstwidget.h"
#include "loginwidget.h"
FirstWidget::FirstWidget(QWidget *parent)
    : QWidget(parent)
{
    this->setGeometry(200,200,1066,600);

    //用于显示多媒体的窗口//相当于显示屏,只负责显示
    QVideoWidget* bg_video = new QVideoWidget(this);\
    //加载多媒体//相当于处理器
    bg_player = new QMediaPlayer();
    //两个按钮
    visi_btn = new QPushButton(this);
    user_btn = new QPushButton(this);

    //设置按钮图标图案及大小
    user_btn->setIcon(QIcon("Resource/wangzhe/UIPics/userLoginPic.png"));//需重新设置图片路径
    visi_btn->setIcon(QIcon("Resource/wangzhe/UIPics/visitLoginPic.png"));//需重新设置图片路径
    user_btn->setIconSize(QSize(130,60));
    visi_btn->setIconSize(QSize(130,60));
    //设置按钮为无框
    user_btn->setFocusPolicy(Qt::NoFocus);
    visi_btn->setFocusPolicy(Qt::NoFocus);
    //这个不确定是什么用,没有也无所谓
    user_btn->setFlat(true);
    visi_btn->setFlat(true);

    //设置控件位置及大小
    bg_video->setGeometry(0,0,this->width(),this->height());
    visi_btn->setGeometry(bg_video->width()/5,this->height()-100,120,60);
    user_btn->setGeometry(-150+bg_video->width()*4/5,this->height()-100,120,60);


    //设置bg_video显示bg_player加载的多媒体
    bg_player->setVideoOutput(bg_video);

    //设置多媒体文件路径
    bg_player->setMedia(QUrl::fromLocalFile("Resource/video/login_bg.mp4"));//需重新设置视频路径
    //播放
    bg_player->setVolume(30);
    bg_player->play();
    //绑定信号和槽。
    connect(bg_player,SIGNAL(stateChanged(QMediaPlayer::State)),this,SLOT(mediaStateChanged(QMediaPlayer::State)));
    connect(user_btn,SIGNAL(released()),this,SLOT(userWdget()));
    connect(visi_btn,SIGNAL(released()),this,SLOT(visitWidget()));
}

FirstWidget::~FirstWidget()
{

}

void FirstWidget::mediaStateChanged(QMediaPlayer::State state)
{
    switch(state) {
    case QMediaPlayer::PlayingState:
        break;
    case QMediaPlayer::StoppedState:
        //当视频结束时,继续播放。实现流畅循环播放的界面效果
        bg_player->play();
    default:
        break;
    }
}




void FirstWidget::visitWidget()
{
    qDebug()<<"游客登录";
}

void FirstWidget::userWdget()
{
    qDebug()<<"用户登录";
    LoginWidget* lg = new LoginWidget;
    lg->show();
    this->close();
}

main.cpp

#include "firstwidget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    FirstWidget w;
    w.show();

    return a.exec();
}

如果对你有帮助的话,深感荣幸

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的图形用户界面(GUI)开发工具集,可以用来开发各种应用程序,包括音视频播放器。 QMediaPlayer是Qt中的一个多媒体播放类,可以用来播放音频和视频文件。基于QMediaPlayer,我们可以开发一个功能完善的音视频播放器。 首先,我们可以使用QMediaPlayer提供的功能来实现基本的音视频播放控制,包括播放、暂停、停止、快进、快退等。我们可以通过按钮、菜单或者快捷键来触发相应的操作,或者可以根据用户的输入来实现自动播放和暂停。 其次,我们可以通过QMediaPlayer的信号和槽机制来实现一些附加功能。例如,当播放器播放完一个文件时,我们可以发出一个信号来通知用户,或者自动切换到下一个文件。我们还可以监听播放器的状态变化,例如播放、暂停、停止等,以便更新界面和提供相应的反馈信息。 此外,我们还可以使用QMediaPlayer的媒体查询功能来获取音视频文件的元数据,例如时长、作者、标题等信息,以及获取当前播放位置和进度。我们可以将这些信息显示在界面上,让用户获得更好的使用体验。 除了以上功能,我们还可以使用Qt提供的其他模块来增加更多的特性。例如,我们可以使用Qt Multimedia模块的QAudioProbe来实现音频波形显示,使用Qt MultimediaWidgets模块的QVideoWidget来实现视频播放区域,使用Qt Widgets模块的QSlider来实现音视频进度条等。 总之,基于QMediaPlayer的开发,我们可以轻松实现一个功能完善的音视频播放器,满足用户对于音视频播放的基本需求,并且具备一定的扩展性,可以根据实际需求进行功能扩展和自定义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值