QT简易播放器
最近生活有點忙,期末的復習,每天下午還要兼職,學習的時間少了許多,西安的天氣還這么熱。
先看今天這個播放器項目的運行:
QTplayer.pro:
#------------------------------------------------- # # Project created by QtCreator 2021-04-07T14:10:59 # #-------------------------------------------------QT += core gui multimedia multimediawidgetsgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = QTPlayer TEMPLATE = app# The following define makes your compiler emit warnings if you use # any feature of Qt which as been marked as 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 you use 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.0SOURCES += \main.cpp \mainwindow.cppHEADERS += \mainwindow.hFORMS += \mainwindow.uiRESOURCES += \res.qrcmainwindow.h:
#ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QVideoWidget> #include <QMediaPlayer> #include <QFileDialog> #include <QString> namespace Ui { class MainWindow; }class MainWindow : public QMainWindow {Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;QMediaPlayer *mediaPlayer; private slots:void play();void mediaStateChanged(QMediaPlayer::State state);//改變播放位置void positionChanged(qint64 position);//獲取播放位置void setPosition(int position);//播放長度void durationChanged(qint64 position);//播放異常的操作void handleError();void on_toolButton_clicked();void on_horizontalSlider_sliderMoved(int position);void on_toolButton_2_clicked(); };#endif // MAINWINDOW_Hmainwindow.cpp:
#include "mainwindow.h" #include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);//設置主界面背景 // QPixmap pixmap=QPixmap("C:/Users/zfc/Desktop/QtProject/res/ok.jpg"); // QPalette palette; // palette.setBrush(backgroundRole(),QBrush(pixmap)); // setPalette(palette); //connect(ui->actionEXIT,&QAction::triggered,[=](){this->close();});//調色板 控件的樣式QPalette palette (this->palette());palette.setColor(QPalette::Background, Qt::yellow);this->setPalette( palette );setWindowIcon(QIcon("C:/Users/zfc/Desktop/QtProject/res/Coin0001.png"));this->setFixedSize(this->width(),this->height());//創建mediaplayermediaPlayer=new QMediaPlayer(this);//設置對應mediaplayer的QvideoWidgetmediaPlayer->setVideoOutput(ui->widget);//設置播放屬性//1 監聽信號變化函數connect(mediaPlayer,SIGNAL(stateChanged(QMediaPlayer::State)),this,SLOT(mediaStateChanged(QMediaPlayer::State)));//播放進度信號變化connect(mediaPlayer,SIGNAL(positionChanged(qint64)),this,SLOT(positionChanged(qint64)));//媒體播放長度信號變化connect(mediaPlayer,SIGNAL(durationChanged(qint64)),this,SLOT(durationChanged(qint64)));//設置播放錯誤關聯connect(mediaPlayer,SIGNAL(error(QMediaPlayer::Error)),this,SLOT(handleError()));//設置播放按鈕ui->toolButton->setToolTip("播放"); // ui->toolButton->setAutoRaise(true);ui->toolButton->setIcon(QPixmap("C:/Users/zfc/Desktop/imag/2 (1).jpg"));//設置打開文件按鈕ui->toolButton_2->setToolTip("打開文件");//設置按鈕自動升起ui->toolButton_2->setAutoRaise(true);ui->toolButton_2->setIcon(QPixmap("C:/Users/zfc/Desktop/imag/open.png")); }MainWindow::~MainWindow() {delete ui; } void MainWindow::play(){//獲取播放狀態switch(mediaPlayer->state()){case QMediaPlayer::PlayingState:mediaPlayer->pause();break;default:mediaPlayer->play();break;} } void MainWindow::mediaStateChanged(QMediaPlayer::State state){//設置mediaplayer播放過程中動態調整播放進度switch (state) {case QMediaPlayer::PlayingState:ui->toolButton->setToolTip("暫停");ui->toolButton->setIcon(QPixmap("C:/Users/zfc/Desktop/imag/2 (3).jpg"));break;default:ui->toolButton->setToolTip("播放");ui->toolButton->setIcon(QPixmap("C:/Users/zfc/Desktop/imag/2 (2).jpg"));break;} } void MainWindow::setPosition(int position){//調整播放進度mediaPlayer->setPosition(position); }void MainWindow::durationChanged(qint64 duration){//獲取進度條的范圍ui->horizontalSlider->setRange(0,duration); }void MainWindow::positionChanged(qint64 position){//改變播放位置ui->horizontalSlider->setValue(position); } void MainWindow::on_toolButton_clicked() {play();//需要設置按鈕暫停樣式 測試 // ui->toolButton->setToolTip("暫停"); // ui->toolButton->setIcon(QPixmap("C:/Users/zfc/Desktop/imag/2 (3).jpg")); }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();//設置播放的內容mediaPlayer->setMedia(QUrl::fromLocalFile(filename));ui->toolButton->setAutoRaise(true);}mainwindow.ui:
總結
- 上一篇: 前端学习(1694):前端系列javas
- 下一篇: VMware出现配置文件 .vmx 是由