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

相关推荐
马里马里奥-2 小时前
从零搭建AI Agent工具链的技术文章大纲
开发语言·qt
Quz6 小时前
QML 与 JavaScript 交互方式:内联函数、外部文件、信号槽与工作线程
javascript·qt
Quz6 小时前
QML ToolTip 组件:延迟提示与自定义外观
qt
wWYy.7 小时前
RPC详解
qt·rpc·php
Fu_Lin_7 小时前
Qt嵌入式从零基础到精通(01):Qt嵌入式开发全景图:从桌面Qt到ARM Linux
linux·arm开发·qt·qt5·嵌入式linux
海清河晏1118 小时前
Qt实战:从零构建美化登录界面
开发语言·c++·qt
Fu_Lin_8 小时前
《Qt嵌入式从零基础到精通》前言与阅读指南
开发语言·qt
Eason_CM9 小时前
QT学习教程与实战三:控件与QT Designer
c++·windows·qt·visual studio
mabing9931 天前
Qt 生成条纹图
开发语言·qt
Fu_Lin_1 天前
Qt 嵌入式从零基础到精通总纲
开发语言·qt·嵌入式·qt嵌入式