QT(5.9.9 )creator做一个播放器遇到的问题与解决

代码如下(需要自取)(已测试过完美运行)

MyMediaPlayer.pro

QT       += core gui
QT       += multimedia
QT       += multimediawidgets

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include<QDebug>
#include<QFileDialog>  //文件查找对话框
#include<QMediaPlayer>  //播放器
#include<QMediaPlaylist>  //播放队列
#include<QVideoWidget>  //视频显示窗口
#include<QPaintEvent>   //绘图事件
#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();



private slots:
    void on_OpenButton_clicked();

    void on_PlayButton_clicked();

    void on_pauseButton_clicked();

    void on_pushButton_4_clicked();
protected:
    void paintEvent(QPaintEvent*e);

private:
    Ui::MainWindow *ui;
    QMediaPlayer* pPlayer;
    QMediaPlaylist* pPlayerList;
    QVideoWidget* pVideoWidget;
};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"



MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //设置标题
    setWindowTitle("QtCPP");

    //把播放器对象  播放队列对象  显示视频界面的对象做出来
    pPlayer = new QMediaPlayer;
    pPlayerList = new QMediaPlaylist;
    pVideoWidget = new QVideoWidget(ui->label);

    //pVideoWidget->resize(ui->label->size());
    //设置播放器的播放队列
    pPlayer->setPlaylist(pPlayerList);
    //设置播放器的显示窗口
    pPlayer->setVideoOutput(pVideoWidget);

}

MainWindow::~MainWindow()
{
    delete ui;
}


//OpenButton按钮被点击
void MainWindow::on_OpenButton_clicked()
{
    //qDebug()<<"这个按钮被点击了";
    //打开一个文件查找框
    //  \微软  /GNU
    QStringList fileNames=QFileDialog::getOpenFileNames(this,"let me see see",
                                                        "C:/Users/DYT/Desktop",
                                                        "allfiles(*.*);;"
                                                        "MP3(*.mp3);;"
                                                        "MP4(*.mp4);;"
                                                        "MKV(*.mkv);;"
                                                        "AVI(*.avi)");
    pPlayerList->clear();//先清空播放队列

    foreach(QString const&str,fileNames){//在QStringList对象中循环
        //qDebug() << str;
        //把选中的音视频文件添加到播放队列中
        QUrl url(str);
        pPlayerList->addMedia(url);

    }
}
//播放函数
void MainWindow::paintEvent(QPaintEvent*e){
    pVideoWidget->resize(ui->label->size());
}
void MainWindow::on_PlayButton_clicked()
{
    pPlayer->play();
}

void MainWindow::on_pauseButton_clicked()
{
    pPlayer->pause();
}

void MainWindow::on_pushButton_4_clicked()
{
    pPlayer->stop();
}

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>560</width>
    <height>423</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QGridLayout" name="gridLayout">
    <item row="2" column="0" colspan="3">
     <widget class="QWidget" name="widget" native="true">
      <property name="maximumSize">
       <size>
        <width>16777215</width>
        <height>45</height>
       </size>
      </property>
      <layout class="QHBoxLayout" name="horizontalLayout">
       <item>
        <widget class="QPushButton" name="OpenButton">
         <property name="text">
          <string>打开</string>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QPushButton" name="PlayButton">
         <property name="text">
          <string>播放</string>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QPushButton" name="pauseButton">
         <property name="text">
          <string>暂停</string>
         </property>
        </widget>
       </item>
       <item>
        <widget class="QPushButton" name="pushButton_4">
         <property name="text">
          <string>停止</string>
         </property>
        </widget>
       </item>
      </layout>
     </widget>
    </item>
    <item row="1" column="0">
     <widget class="QSlider" name="horizontalSlider">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
     </widget>
    </item>
    <item row="0" column="0">
     <widget class="QLabel" name="label">
      <property name="text">
       <string>dyt影音</string>
      </property>
      <property name="alignment">
       <set>Qt::AlignCenter</set>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>560</width>
     <height>26</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>

遇到的问题:

1.播放视频无法播放,出现下面的代码

解放方案:

缺少一个插件, LAV Filters可以去搜索下载,github有install版本的下载它,一直下一步就能装好。

2.各种报错

解决方案:

检查

QT       += multimedia
QT       += multimediawidgets

这两个代码是否正确添加

前后类名是否一致等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值