最近生活有点忙,期末的复习,每天下午还要兼职,学习的时间少了许多,西安的天气还这么热。
先看今天这个播放器项目的运行:
QTplayer.pro:
#-------------------------------------------------
#
# Project created by QtCreator 2021-04-07T14:10:59
#
#-------------------------------------------------
QT += core gui multimedia multimediawidgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = 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.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
RESOURCES += \
res.qrc
mainwindow.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_OBJECT
public:
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_H
mainwindow.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());
//创建mediaplayer
mediaPlayer=new QMediaPlayer(this);
//设置对应mediaplayer的QvideoWidget
mediaPlayer->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: