Qt5:QMultimedia实现王者荣耀登录界面动态效果
先看看效果吧
传不了视频所以将就看图吧,代码在下面。
获取王者荣耀视频和图标的方法
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();
}
如果对你有帮助的话,深感荣幸