- QDialog
- QVideoWidget
- QMediaPlayer
主要涉及:首先在编辑器上画好一个MainWidow窗口,然后再用纯代码的方式增加一个QVideoWidget。
Pro文件中的代码:
#-------------------------------------------------
#
# Project created by QtCreator 2016-10-29T11:02:40
#
#-------------------------------------------------
QT += core gui
QT += multimediawidgets
QT += multimedia
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = VideoPlayer
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
sysDialog.cpp \
aboutdialog.cpp
HEADERS += mainwindow.h \
sysDialog.h \
aboutdialog.h
FORMS += mainwindow.ui \
sysDialog.ui \
aboutdialog.ui
MainWindow.h中的代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QVideoWidget>
#include <QMediaPlayer>
#include "sysDialog.h"
#include "aboutdialog.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_actionsysConfiure_triggered();
void on_actionVodeoPlayer_triggered();
void on_actionInformation_triggered();
void on_actionExit_triggered();
private:
Ui::MainWindow *ui;
sysDialog sDialog;
aboutDialog aDialog;
QMediaPlayer *player;
QVideoWidget *videoWidget;
};
#endif // MAINWINDOW_H
MainWindow.cpp的代码:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtWidgets>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
// ui->videoWidget;
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionsysConfiure_triggered()//系统设置
{
sDialog.exec();
// 在主窗口中间显示
int x =this->x() + (this->width() - sDialog.width()) / 2;
int y =this->y() + (this->height() - sDialog.height()) / 2;
sDialog.move(x, y);
}
void MainWindow::on_actionVodeoPlayer_triggered()//视频播放
{
player=new QMediaPlayer;
videoWidget=new QVideoWidget;
player->setVideoOutput(videoWidget);
videoWidget->setGeometry(0,120,850,450);//在原窗体中设置一个如此大小的播放窗口
player->setMedia(QUrl::fromLocalFile("D:/test.mp4"));
this->layout()->addWidget(videoWidget);
player->play();
}
void MainWindow::on_actionInformation_triggered()//软件信息
{
aDialog.exec();
int x =this->x() + (this->width() - aDialog.width()) / 2;
int y =this->y() + (this->height() - aDialog.height()) / 2;
aDialog.move(x, y);
}
void MainWindow::on_actionExit_triggered()//退出软件
{
this->close();
}