关键词:
ui界面设计如下:
2、代码结构
3、dialog.cpp
#include "dialog.h" #include "ui_dialog.h" #include<QStringList> #include<QDebug> Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog) { ui->setupUi(this); ui->lb_dis->installEventFilter(this); pro = new QProcess(); tp = new QTimer(); tp1 = new QTimer(); flag =0; flag1 =0; music = "libai.avi"; i=1; fullflag = 0; musiclist[0]= "libai.avi"; musiclist[1] = "kjwcbz.avi"; // connect(pro,SIGNAL(readyReadStandardOutput()),this,SLOT(gettime())); connect(tp,SIGNAL(timeout()),this,SLOT(gettime())); connect(tp1,SIGNAL(timeout()),this,SLOT(changimage())); connect(pro,SIGNAL(finished(int)),this,SLOT(getmusic())); // connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(setlineeditvalue(int))); tp1->start(2000); } Dialog::~Dialog() { delete ui; } void Dialog::on_bt_play_clicked() //click play { QStringList cmd_list; //pro->write("quit "); tp->start(100); cmd_list<<"/mnt/hgfs/shared/qt/qmyplay/player/"+music; cmd_list<<"-wid"; cmd_list<< QString::number(ui->lb_dis->winId()); cmd_list<<"-slave"; cmd_list<<"-quiet"; pro->start("mplayer",cmd_list); } void Dialog::on_bt_pause_clicked() //click pause { switch (flag) { case 1: { pro->write("pause "); tp->start(100); flag=0; break; } case 0: { pro->write("pause "); tp->stop(); flag++; break; } //qDebug()<<"pause"; } } void Dialog::gettime() //get current and time length { // pro->write("pause "); pro->write("get_time_pos "); pro->write("get_time_length "); while(pro->canReadLine()) { QString timeinfo = pro->readLine(); QString timeend = pro->readLine(); // qDebug()<<timeinfo; //qDebug()<<timeend; s = timeinfo.section(".",-2,-2); s1 = timeend.section(".",-2,-2); s = s.section("=",-1,-1); s1 = s1.section("=",-1,-1); // qDebug()<<"info"<<s; // qDebug()<<"end"<<s1; // qDebug()<<s; int a1,a2,b1,b2; a1 = s.toInt()%60;//geiwei a2 = s.toInt()/60;//shiwei QString ss,ss1,ss2,ss3; ss.setNum(a1); ss1.setNum(a2); b1 = s1.toInt()%60;//geiwei b2 = s1.toInt()/60;//shiwei ss2.setNum(b1); ss3.setNum(b2); // ui->horizontalSlider->setMinimumSize(0); ui->horizontalSlider->setMaximum(s1.toInt()); ui->horizontalSlider->setValue(s.toInt()); ui->lb_current_time_2->setText("00:"+ss3+":"+ss2); ui->lb_current_time->setText("00:"+ss1+":"+ss); } } void Dialog::on_bt_input_clicked() //input music { QDir dir("/mnt/hgfs/shared/qt/qmyplay/player"); QStringList filelist; filelist<<"*.avi"<<"*.mp3"; QStringList filename = dir.entryList(filelist); //if(ui->listWidget->currentItem()==NULL) ui->listWidget->addItems(filename); } void Dialog::on_bt_input_2_clicked() //delete music { delete ui->listWidget->currentItem(); } void Dialog::on_bt_speed_clicked()//speed ++ { pro->write("seek +5 "); } void Dialog::on_bt_speed_2_clicked()//speed -- { pro->write("seek -5"); } void Dialog::sendmsg() { } void Dialog::on_horizontalSlider_sliderMoved(int position)//position { tp->stop(); pro->write("pause "); //ui->horizontalSlider->setValue(position); QString tmp; tmp.setNum(position); s=tmp; // qDebug()<<tmp; QString posi ="seek " +tmp+" 2"; pro->write(posi.toLatin1()); qDebug()<<posi.toLatin1(); tp->start(100); pro->write("pause"); //qDebug()<<position<<"position"; } /*void Dialog::on_listWidget_Clicked(const QModelIndex &index) { music = ui->listWidget->currentItem()->text(); pro->write("quit "); QStringList cmd_list; tp->start(100); cmd_list<<"/mnt/hgfs/shared/qt/qmyplay/player/"+music; cmd_list<<"-wid"; cmd_list<< QString::number(ui->lb_dis->winId()); cmd_list<<"-slave"; cmd_list<<"-quiet"; pro->start("mplayer",cmd_list); } */ /*void Dialog::on_horizontalSlider_sliderPressed() { QString tmp; tmp.setNum(ui->horizontalSlider->value()); qDebug()<<tmp; QString posi ="seek" +tmp+" 2"; pro->write(posi.toLatin1()); }*/ void Dialog::on_listWidget_clicked(const QModelIndex &index) { music = ui->listWidget->currentItem()->text(); pro->write("quit "); on_bt_play_clicked(); //pro->start(); //pro->write("quit "); } void Dialog::on_bt_speed_3_clicked()//volume ++ { pro->write("volume +5"); } void Dialog::on_bt_speed_4_clicked()//volume -- { pro->write("volume -5"); } void Dialog::changimage() //change image { //this->resize(715, 423); switch (flag1) { case 0: this->setStyleSheet(QStringLiteral("QDialog{border-image: url(:/new/prefix1/player/t01185f568f2f064f39.jpg);}")); flag1++; break; case 1: this->setStyleSheet(QStringLiteral("QDialog{border-image: url(:/new/prefix1/player/t01c952a08ad7577d58.jpg);}")); flag1++; break; case 2: this->setStyleSheet(QStringLiteral("QDialog{border-image: url(:/new/prefix1/player/t01f4b009b55efffa08.jpg);}")); flag1 = 0; break; } } void Dialog::setlineeditvalue(int value) //set line value { int pos = ui->horizontalSlider->value(); QString tmp; tmp.setNum(pos); qDebug()<<tmp; QString posi ="seek" +tmp+" 2"; pro->write(posi.toLatin1()); //ui->horizontalSlider->setValue(pos); //qDebug()<<ui->horizontalSlider->value(); //toInt } void Dialog::getmusic() //recycle play { // pro->close(); switch(i) {case 1: music = musiclist[1]; i =0; break; case 0: music = musiclist[0]; i++; break; } qDebug()<<"end"; qDebug()<<music; // on_bt_play_clicked(); on_bt_play_clicked(); //pro->start(); qDebug()<<"end"; } void Dialog::on_bt_full_clicked() //full screen button { switch (fullflag) { case 0: //this->setWindowState(Qt::Dialog); this->setWindowFlags(Qt::Dialog); this->showFullScreen(); fullflag++; break; case 1: //this->setWindowFlags(Qt::SubWindow); this->showNormal(); fullflag=0; break; } // qDebug()<<"fi;;"; } void Dialog::on_bt_prev_clicked() //prev play { if(music == "libai.avi") music = musiclist[1]; pro->write("quit "); on_bt_play_clicked(); } void Dialog::on_bt_next_clicked() //next play { if(music == "libai.avi") music = musiclist[1]; pro->write("quit "); on_bt_play_clicked(); } bool Dialog::eventFilter(QObject *obj, QEvent *evt) //mouse double click and click { if(obj==ui->lb_dis) { if(evt->type()==QEvent::MouseButtonDblClick) { switch (fullflag) { case 0: //this->setWindowState(Qt::Dialog); this->setWindowFlags(Qt::Dialog); this->showFullScreen(); fullflag++; break; case 1: //this->setWindowFlags(Qt::SubWindow); this->showNormal(); fullflag=0; break; } } if(evt->type() == QEvent::MouseButtonRelease) { switch (flag) { case 1: { pro->write("pause "); tp->start(100); flag=0; break; } case 0: { pro->write("pause "); tp->stop(); flag++; break; } } } } }
4、main.cpp
#include "dialog.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Dialog w; w.show(); return a.exec(); }
dialog.h
1 #ifndef DIALOG_H 2 #define DIALOG_H 3 4 #include <QDialog> 5 #include<QStringList> 6 #include<QProcess> 7 #include <QScrollBar> 8 #include<QAbstractSlider> 9 #include<QTimer> 10 #include<QDir> 11 namespace Ui { 12 class Dialog; 13 } 14 15 class Dialog : public QDialog 16 { 17 Q_OBJECT 18 19 public: 20 explicit Dialog(QWidget *parent = 0); 21 ~Dialog(); 22 bool eventFilter(QObject *obj, QEvent *evt); 23 24 private slots: 25 void on_bt_play_clicked(); 26 void gettime(); 27 void on_bt_pause_clicked(); 28 void sendmsg(); 29 void on_bt_input_clicked(); 30 31 void on_bt_input_2_clicked(); 32 33 void on_bt_speed_clicked(); 34 35 void on_bt_speed_2_clicked(); 36 37 //void on_horizontalSlider_sliderMoved(int position); 38 39 void on_horizontalSlider_sliderMoved(int position); 40 41 //void on_horizontalSlider_valueChanged(int value); 42 43 // void on_listWidget_Clicked(const QModelIndex &index); 44 45 //void on_horizontalSlider_sliderPressed(); 46 47 void on_listWidget_clicked(const QModelIndex &index); 48 49 void on_bt_speed_3_clicked(); 50 void getmusic(); 51 void on_bt_speed_4_clicked(); 52 void changimage(); 53 void setlineeditvalue(int); 54 void on_bt_full_clicked(); 55 56 void on_bt_prev_clicked(); 57 58 void on_bt_next_clicked(); 59 60 private: 61 Ui::Dialog *ui; 62 QProcess *pro; 63 QAbstractSlider *asp; 64 QTimer *tp,*tp1; 65 QString s,s1,music; 66 int flag,flag1,i,fullflag; 67 QString musiclist[5]; 68 69 }; 70 71 #endif // DIALOG_H
在qt中连续播放多首歌曲并实现多个歌曲循环播放
...,就是每当这首歌快结束的时候发射该信号,告诉接下来播放器干嘛,停止播放还是单曲循环或者别的。。。如果是qt5的话,就简单多了,用multimedia模块。分别new一个qmediaplayer和qmediaplaylist对象,qmediaplaylist内置5个音乐播放模式... 查看详情
qt中如何实现一个简单的动画(代码片段)
QT可以实现一下简单的动画,比如运动的时钟闪烁的按钮。动画的实现:(1)创建一个定时器(2)调用QWidget::update()通知界面重绘实现一个按钮闪烁的例子:circlewidget.h#ifndefCIRCLAWIDGET_H#defineCIRCLAWIDGET_H#include<QFrame>#include<QTi... 查看详情
qt简单应用之播放wav声音(代码片段)
对于每一个可视化开发者而言,创建一个可以播放声音的工程或许是必要的,在QT中,给我们提供了比较友好的播放声音的函数类库QSound首先我们需要在工程文件中添加QT+=multimedia然后我们需要在文件头部分引入QSound库文件:#incl... 查看详情
[simpleplayer]实现一个简单的播放器
简单的播放器需要实现一个最基本的功能:播放视频文件。实现这个功能需要包含以下几个步骤:从视频文件中提取视频图像在屏幕上显示视频图像视频帧的同步,也就是保证视频图像在合适的时间在屏幕上显示从视频文件中提... 查看详情
qt制作一个图片播放器
前言:使用qt制作了一个简单的图片播放器,可以播放gif、png等格式图片先来看看播放器的功能(当然是很简陋的,没有很深入的设计): 1、点击图片列表中图片进行播放。 2、自动播放,播放的图片的间隔时... 查看详情
QT (C++) 中的简单声音 (.wav) 播放应用程序
...2012-03-3118:52:11【问题描述】:我是Qt新手,正在尝试编写一个可以规划wav文件的简单qt类。经过一番阅读和环顾后,我编写了课程,代码如下。代码后有问题#include<QtGui/QApplication>#include"playsoun 查看详情
qt5中的seekslider实现
...020:49:53【问题描述】:大家。我正在用qt5重写我的qt4音乐播放器。而且我无法制作正确的搜索滑块,就像在声子中一样。你有实现这部分UI的简单示例吗?更新:这是我的方法://mainwindow.cppconnect(ui->seekSlider,SIGNAL(sliderMoved(int 查看详情
简单的多屏播放器示例(vlc+qt)
简单的多屏播放器示例(vlc+qt)介绍简单的多屏播放器最多同时播放16个视频支持本地文件和rtsp、rtmp等流媒体播放VS2015工程,依赖Qt+VLC练手作品截图下载程序:download.csdn.net/detail/u014755412/9908787源码:github.com/FutaAlice/QtPlayer代码分析... 查看详情
qt中如何使用ffmpeg实现转码和播放
我现在用了Qt做一个媒体播放器,可是视频只支持一种格式播放能不能用Qt+ffmpeg实现多种格式播放(不用SDL)我现在想在播放器上加一个转码功能,点击一个按钮,进入转格式界面选择视频进行转格式,应该怎么做?求大神赐教... 查看详情
qt之调用fftw3实现音频频谱(原理)
一.效果最近在用播放器业界天花板PotPlayer听歌时,发现其频谱跳动非常有趣,如下所示: 于是决定自己实现一个,如下所示:别看功能很简单,但是涉及到的原理还是挺多的,本篇主要是关于原理的总结。 二.频谱... 查看详情
qt实现一个简单的计算器
1、计算器的界面如下图所示dalog.cpp#include"dialog.h"#include"ui_dialog.h"#include<QPushButton>#include<QDebug>#include<QtMath>constchar*a;Dialog::Dialog(QWidget*parent):QDialog(parent),ui(newUi: 查看详情
qt简单的视频播放器(代码片段)
...设置一个不含UI界面的工程取消构建目录因为要引入视频播放器的模块,我们在pro中引入对应的模块因为要引入布局格式,所以我们引入水平布局和垂直布局,对应的.h中引入以下两个头文件同样的,我们要引入视... 查看详情
c++qt实现音视频播放(代码片段)
...放 自己做的时候踩了很多坑 避免以后踩坑故在此记录实现过程 Qt版本5.9 基于C++11 Qt核心组件与附加组件安装时请打钩 否则可能出现项目中缺少视频播放模块的问题1.首先创建一个新项目 并且打开.pro项目设置文件新... 查看详情
用qt的qaudiooutput类播放wav音频文件
用Qt的QAudioOutput类播放WAV音频文件最近有一个项目,需要同时控制4个声卡播放不同的声音,声音文件很简单就是没有任何压缩的wav文件。如果只是播放wav文件,那么Qt里简单的QSound类是最适合的。但是QSound有一个很大的缺陷就是... 查看详情
qt实现简单的密码加密(代码片段)
一.QT实现ASCII码值改变,来修改字符,实现简单加密原作者这种思路可以学习一下QT版本:Qt5.5.1(MSVC2013,32bit)QtCreator版本:QtCreator3.5.1(opensource)系统:win10假设有这样一个场景,一个软件的用户帐号个数很少... 查看详情
使用uwp实现一个简单的媒体播放器
...效果 上图是我所做的播放器的效果,比较简单也没有什么特殊的功能。整个播放器大部分都是MediaElement实现的,我自己又添加了选取文件和停止的功能。如图加号是选取一个本地的文件,方块... 查看详情
qt学习笔记——实现①从本地选择播放源②连接数据库③带有播放列表的视频播放器(代码片段)
...;六)——①进度条可拖动、点击②有暂停按钮的视频播放器的基础上构建。2.因为实现的功能有点多,所以讲解的思路和前几篇不太一样了,先不把UI的设计一股脑儿列出来,而是一个功能一个功能的介绍。3.实现... 查看详情
嵌入式qt开发一个音乐播放器(代码片段)
...开发测试。由于Qt是支持跨平台的,因此本篇的音乐播放器,先在Windows上编写调试,功能调好后再通过交叉编译,在Linux板子上测试。在第一篇的开箱介绍中,体验了OK3568板子自带的Qt界面,有视频播放器... 查看详情