QTplayer 程序

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include <QMainWindow>

#include <QProcess>

#include <QTimer>

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 btnFileOpen_clicked();

void on_btnFileOpen_clicked();

void on_btnPlay_clicked();

void on_btnPrevious_clicked();

void on_btnNext_clicked();

void on_dialVoice_valueChanged(int value);

void on_horizontalSlider_valueChanged(int value);

void doProcessTimeOut();

private:

Ui::MainWindow *ui;

QStringList playList;

int playIndex;

QProcess *playProcess;

int isPlaying;

QTimer *myTimer;

void Init();

void playMovie(const QString filename);

};

#endif // MAINWINDOW_H


#include "mainwindow.h"

#include "ui_mainwindow.h"

#include "QFileDialog"

MainWindow::MainWindow(QWidget *parent)

: QMainWindow(parent)

, ui(new Ui::MainWindow)

{

ui->setupUi(this);

Init();

//connect(ui->btnFileOpen,&QPushButton::clicked,this,&MainWindow::btnFileOpen_clicked);

}

MainWindow::~MainWindow()

{

delete ui;

}

//slots

//void MainWindow::btnFileOpen_clicked()

//{

// QStringList array = QFileDialog::getOpenFileNames(this,"add videos","/home/l/Videos","video(*.mp4)");

// if (array.length() <=0) return;

// playList = array;

// playIndex = 0;

// playMovie(playList.at(playIndex));

//}

void MainWindow::on_btnFileOpen_clicked()

{

QStringList array = QFileDialog::getOpenFileNames(this,"add videos","/home/l/Videos","video(*.mp4)");

if (array.length() <=0) return;

playList = array;

playIndex = 0;

playMovie(playList.at(playIndex));

}

void MainWindow::on_btnPlay_clicked()

{

QString cmd = "pause\n";

switch (isPlaying)

{

case 0:

break;

case 1:

isPlaying = 2;

playProcess->write(cmd.toLatin1());

ui->btnPlay->setIcon(QIcon(":/new/prefix1/image/icons-start.png"));

break;

case 2:

isPlaying = 1;

playProcess->write(cmd.toLatin1());

ui->btnPlay->setIcon(QIcon(":/new/prefix1/image/stop.png"));

break;

}

}

void MainWindow::on_btnPrevious_clicked()

{

playIndex--;

if (playIndex < 0)

{

playIndex = playList.length() -1;

}

playMovie(playList.at(playIndex));

}

void MainWindow::on_btnNext_clicked()

{

playIndex++;

if (playIndex >= playList.length())

{

playIndex = 0;

}

playMovie(playList.at(playIndex));

}

void MainWindow::on_dialVoice_valueChanged(int value)

{

if (isPlaying != 0)

{

QString cmd = QString("volume %1 1\n").arg(value);

playProcess->write(cmd.toLatin1());

}

}

void MainWindow::on_horizontalSlider_valueChanged(int value)

{

if (isPlaying != 0)

{

QString cmd = QString("seek %1 1\n").arg(value);

playProcess->write(cmd.toLatin1());

}

}

void MainWindow::doProcessTimeOut()

{

QString cmd = "get_percent_pos\n";

playProcess->write(cmd.toLatin1());

}

//end slots

//function

void MainWindow::Init()

{

playList.clear();

playIndex=0;

playProcess = new QProcess(this);

isPlaying = 0;

myTimer = new QTimer(this);

connect(myTimer,&QTimer::timeout,this,&MainWindow::doProcessTimeOut);

}

void MainWindow::playMovie(const QString filename)

{

QString program = "/usr/bin/mplayer";

QStringList arguments;

arguments << filename;

arguments << "-slave";

arguments << "-quiet";

arguments << "-wid";

arguments << QString::number(ui->label->winId());

playProcess->close();

playProcess->start(program,arguments);

myTimer->start(1000*1);

isPlaying = 1;

ui->btnPlay->setIcon(QIcon(":/new/prefix1/image/stop.png"));

QString cmd = QString("volume %1 1\n").arg(ui->dialVoice->value());

playProcess->write(cmd.toLatin1());

ui->horizontalSlider->setValue(0);

}

//end function

相关推荐
sunriver200028 分钟前
【Qt】【第三方库】spdlog日志模块的使用
qt·spdlog
LongRunning32 分钟前
【随手笔记】QT避坑一(串口readyRead信号不产生)
笔记·qt
feiyangqingyun4 小时前
用纯Qt实现GB28181协议/实时视频/云台控制/预置位/录像回放和下载/事件订阅/语音对讲
qt·音视频·gb28181·qt监控国标
beyond谚语5 小时前
七、Qt框架编写的多线程应用程序
c++·qt·多线程·定时器
旺仔溜溜没7 小时前
在pycharm中搭建yolo11分类检测系统1--PyQt5学习(一)
ide·python·qt·学习·pycharm
积跬步至千里PRO11 小时前
理解JSON-RPC 2.0 协议
qt·rpc·json
漫步企鹅12 小时前
【GDB】调试程序的基本命令和用法(Qt程序为例)
开发语言·qt·gdb·调试
狄加山6751 天前
Qt模型-视图架构
开发语言·qt
notfindjob1 天前
QT Sqlite数据库-教程001 创建数据库和表-下
数据库·qt·sqlite
你又食言了哦1 天前
qt上设置 WebAssembly显示中文
开发语言·qt·wasm