详解QT媒体播放器代码案例实现

移动开发
QT媒体播放器代码案例实现是本文要介绍的内容,主要是来了解并学习QT中关于播放器的应用,本文通过代码来实现QT中播放器的应用,具体内容来看详细代码。

QT媒体播放器代码案例实现是本文要介绍的内容,主要是来了解并学习QT中关于播放器的应用,本文通过代码来实现QT播放器的应用,具体内容来看详细代码。

可以全屏,解决布局问题,时间进度可以显示..代码尽量简单,基本***,注需要解码包

如果需要QT基于mplayer媒体播放器:,请参考查看。

MAINWINDOW.cpp  
#include"mainwindow.h"  
#include"ui_mainwindow.h"  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include"QFileDialog"  
#include"qDebug"  
#include"phonon"  
#include"QLabel"  
#include  
#include  
#include  
#include"phonon/VideoWidget"  
#include"QTime"  
#include  
#include  
MainWindow::MainWindow(QWidget*parent):  
QMainWindow(parent),  
ui(newUi::MainWindow)  
{  
ui->setupUi(this);  
ui->widget->installEventFilter(this);  
media=newPhonon::MediaObject;  
//media->setCurrentSource(Phonon::MediaSource("../Puppet.mpg"));  
w1=newQWidget(this);  
w3=newQWidget(this);  
timeLcd=newQLCDNumber(this);  
vwidget=newPhonon::VideoWidget(w1);  
Phonon::createPath(media,vwidget);  
vwidget->setAspectRatio(Phonon::VideoWidget::AspectRatioAuto);  
aOutput=newPhonon::AudioOutput(Phonon::VideoCategory);  
Phonon::createPath(media,aOutput);  
//QLabel*l1=newQLabel(QString::fromLocal8Bit("播放进度:"));  
//QLabel*l2=newQLabel(QString::fromLocal8Bit("音量:"));  
volumeSlider=newPhonon::VolumeSlider;  
volumeSlider->setAudioOutput(aOutput);  
volumeSlider->setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum);  
Phonon::SeekSlider*seekSlider=newPhonon::SeekSlider;  
seekSlider->setMediaObject(media);  
timeLcd->display("00:00");  
QVBoxLayout*vLayout=newQVBoxLayout;  
vLayout->addWidget(vwidget);  
vwidget->resize(1024,768);  
w1->setLayout(vLayout);  
//QHBoxLayout*h1=newQHBoxLayout;  
//h1->addWidget(l1);  
//h1->addWidget(seekSlider);  
//h1->addWidget(timeLcd);  
//QHBoxLayout*h2=newQHBoxLayout;  
//h2->addWidget(l2);  
//h2->addWidget(volumeSlider);  
//h2->addWidget(ui->widget_4);  
//QVBoxLayout*vLayout1=newQVBoxLayout;  
//vLayout1->addLayout(h1);  
//vLayout1->addLayout(h2);  
//w3->setLayout(vLayout1);  
//QHBoxLayout*hLayout1=newQHBoxLayout;  
//hLayout1->addWidget(w3);  
//QVBoxLayout*vLayout3=newQVBoxLayout;  
//vLayout3->addWidget(w1);  
//vLayout3->addLayout(hLayout1);  
//vLayout3->addWidget(ui->widget_4);  
//w2=newQWidget(this);  
//w2->setLayout(vLayout3);  
this->setCentralWidget(w1);  
QDockWidget*shapesDockWidget1=newQDockWidget(QString::fromLocal8Bit("播放进度"));  
shapesDockWidget1->setWidget(seekSlider);  
//shapesDockWidget1->setLayout(h2);  
//shapesDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea  
//|Qt::RightDockWidgetArea);  
addDockWidget(Qt::BottomDockWidgetArea,shapesDockWidget1);  
QDockWidget*shapesDockWidget2=newQDockWidget(QString::fromLocal8Bit("播放时间"));  
shapesDockWidget2->setWidget(timeLcd);  
shapesDockWidget2->setMaximumSize(100,100);  
//shapesDockWidget1->setLayout(h2);  
//shapesDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea  
//|Qt::RightDockWidgetArea);  
addDockWidget(Qt::BottomDockWidgetArea,shapesDockWidget2);  
QDockWidget*shapesDockWidget3=newQDockWidget(QString::fromLocal8Bit("播放界面"));  
shapesDockWidget3->setWidget(ui->widget_4);  
//shapesDockWidget1->setLayout(h2);  
//shapesDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea  
//|Qt::RightDockWidgetArea);  
//addDockWidget(Qt::RightDockWidgetArea,shapesDockWidget3);  
addDockWidget(Qt::BottomDockWidgetArea,shapesDockWidget3);  
QDockWidget*shapesDockWidget=newQDockWidget(QString::fromLocal8Bit("音量"));  
shapesDockWidget->setWidget(volumeSlider);  
//shapesDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea  
//|Qt::RightDockWidgetArea);  
addDockWidget(Qt::BottomDockWidgetArea,shapesDockWidget);  
ui->pushButton_5->setEnabled(false);  
ui->pushButton_7->setEnabled(false);  
//QAction*at=newQAction("退出全屏",vwidget);  
//vwidget->addAction(at);  
//vwidget->setAcceptDrops(true);  
//at->setShortcuts(QList()<   
//connect(at,SIGNAL(triggered()),vwidget,SLOT(exitFullScreen()));  
QAction*at1=newQAction("退出全屏",vwidget);  
vwidget->addAction(at1);  
vwidget->setAcceptDrops(true);  
at1->setShortcuts(QList()<   
connect(at1,SIGNAL(triggered()),vwidget,SLOT(exitFullScreen()));  
connect(media,SIGNAL(tick(qint64)),this,SLOT(tick(qint64)));  
readSettings();  
}  
MainWindow::~MainWindow()  
{  
deleteui;  
}  
voidMainWindow::resizeEvent(QResizeEvent*)  
{  
//QBitmapmaskBitmap(width(),height());  
//maskBitmap.clear();  
 
//QPainterp(&maskBitmap);  
//p.setBrush(Qt::black);  
//p.drawRoundRect(0,0,width(),height(),2,4);  
//p.end();  
 
//setMask(maskBitmap);  
}  
voidMainWindow::mouseMoveEvent(QMouseEvent*event)  
{  
//if(event->buttons()&Qt::LeftButton){  
////move(event->globalPos()-m_dragPosition);  
//move(event->globalPos()-m_dragPosition);  
//event->accept();  
//}  
 
}  
voidMainWindow::mousePressEvent(QMouseEvent*event)  
{  
//if(event->button()==Qt::LeftButton){  
//m_dragPosition=event->globalPos()-frameGeometry().topLeft();  
 
////m_dragPosition=event->globalPos()-frameGeometry().topLeft();  
//////ui->widget->move(m_dragPosition);  
//event->accept();  
//}  
}  
voidMainWindow::on_pushButton_2_clicked()  
{  
this->close();  
}  
voidMainWindow::on_pushButton_3_clicked()  
{  
this->showMinimized();  
}  
boolMainWindow::eventFilter(QObject*obj,QEvent*event)  
{  
if(obj==ui->widget){  
if(event->type()==QEvent::MouseButtonPress){  
QMouseEvent*ev=static_cast(event);  
if(ev->buttons()&Qt::LeftButton)  
{  
m_dragPosition=ev->globalPos()-frameGeometry().topLeft();  
ev->accept();  
}  
returntrue;  
}elseif(event->type()==QEvent::MouseMove){  
QMouseEvent*ev=static_cast(event);  
if(ev->buttons()&Qt::LeftButton){  
//move(event->globalPos()-m_dragPosition);  
move(ev->globalPos()-m_dragPosition);  
ev->accept();  
}  
 
}  
else{  
returnfalse;  
}  
 
}  
elseif(obj==w1)  
{  
if(event->type()==QEvent::MouseButtonPress){  
QMouseEvent*ev=static_cast(event);  
if(ev->buttons()&Qt::LeftButton)  
{  
vwidget=newPhonon::VideoWidget(this);  
vwidget->setAspectRatio(Phonon::VideoWidget::AspectRatioAuto);  
vwidget->exitFullScreen();  
}  
}  
}  
else{  
//passtheeventontotheparentclass  
returnQMainWindow::eventFilter(obj,event);  
}  
returntrue;  
}  
voidMainWindow::on_pushButton_4_clicked()  
{  
QStringfilename=QFileDialog::getOpenFileName(this,QString::fromLocal8Bit("文件类型"),".",
QString::fromLocal8Bit("文问类型(*.*)"));  
qDebug()<   
media->setCurrentSource(Phonon::MediaSource(filename));  
media->play();  
this->setWindowTitle(filename);  
ui->pushButton_5->setEnabled(false);  
ui->pushButton_7->setEnabled(true);  
w1->setFocus();  
//this->ui->label->setText(filename);  
}  
voidMainWindow::on_pushButton_8_clicked()  
{  
QMessageBox::information(this,tr("AboutMdieaPlayer"),  
tr("ID:Jammy0.03"));  
}  
voidMainWindow::on_pushButton_clicked()  
{  
vwidget->enterFullScreen();  
}  
voidMainWindow::on_pushButton_5_clicked()  
{  
media->play();  
ui->pushButton_5->setEnabled(false);  
ui->pushButton_7->setEnabled(true);  
}  
voidMainWindow::on_pushButton_7_clicked()  
{  
media->pause();  
 
ui->pushButton_7->setEnabled(false);  
ui->pushButton_5->setEnabled(true);  
}  
voidMainWindow::on_pushButton_6_clicked()  
{  
//media->setCurrentSource(Phonon::MediaSource(this->ui->label->text()));  
media->stop();  
}  
voidMainWindow::tick(qint64time)  
{  
QTimedisplayTime(0,(time/60000)%60,(time/1000)%60);  
timeLcd->display(displayTime.toString("mm:ss"));  
}  
voidMainWindow::keyPressEvent(QKeyEvent*k)  
{  
if(k->key()==Qt::Key_Space)  
{  
if(ui->pushButton_5->isEnabled()==true)  
{  
media->pause();  
ui->pushButton_5->setEnabled(false);  
ui->pushButton_7->setEnabled(true);  
}  
elseif(ui->pushButton_5->isEnabled()==false)  
{  
media->play();  
ui->pushButton_5->setEnabled(true);  
ui->pushButton_7->setEnabled(false);  
}  
}  
elseif(k->modifiers()==Qt::AltModifier&&k->key()==Qt::Key_Return)  
{  
vwidget->enterFullScreen();  
}  
//elseif(k->modifiers()==Qt::ShiftModifier&&k->key()==Qt::Key_A)  
//{  
//vwidget->enterFullScreen();  
//}  
}  
voidMainWindow::writeSettings()  
{  
QSettingssettings("SoftwareInc.","IconEditor");  
settings.beginGroup("mainWindow");  
settings.setValue("size",size());  
settings.setValue("state",saveState());  
settings.endGroup();  
}  
voidMainWindow::readSettings()  
{  
QSettingssettings("SoftwareInc.","IconEditor");  
settings.beginGroup("mainWindow");  
resize(settings.value("size").toSize());  
restoreState(settings.value("state").toByteArray());  
settings.endGroup();  
}  
voidMainWindow::closeEvent(QCloseEvent*ex)  
{  
inta=QMessageBox::information(NULL,QString::fromLocal8Bit("对话框"),
QString::fromLocal8Bit("是否需要退出"),
QString::fromLocal8Bit("确定"),
QString::fromLocal8Bit("取消"),NULL,0,-1);  
if(a==0)  
{  
writeSettings();  
ex->accept();  
}  
elseif(a==1)  
{  
ex->ignore();  
}  
}  
****************************************************  
MAINWINDOW.H  
#defineMAINWINDOW_H  
#include  
#include  
#include  
#include  
namespaceUi{  
classMainWindow;  
}  
classMainWindow:publicQMainWindow  
{  
Q_OBJECT  
public:  
explicitMainWindow(QWidget*parent=0);  
~MainWindow();  
protected:  
Phonon::MediaObject*media;  
Phonon::VideoWidget*vwidget;  
Phonon::AudioOutput*aOutput;  
Phonon::VolumeSlider*volumeSlider;  
Phonon::SeekSlider*seekSlider;  
private:  
Ui::MainWindow*ui;  
QPointm_dragPosition;  
protected:  
voidresizeEvent(QResizeEvent*event);  
voidmouseMoveEvent(QMouseEvent*event);  
voidmousePressEvent(QMouseEvent*event);  
booleventFilter(QObject*obj,QEvent*ev);  
QWidget*w1;  
QWidget*w2;  
QWidget*w3;  
QLCDNumber*timeLcd;  
privateslots:  
voidon_pushButton_6_clicked();  
voidon_pushButton_7_clicked();  
voidon_pushButton_5_clicked();  
voidon_pushButton_clicked();  
voidon_pushButton_8_clicked();  
voidon_pushButton_4_clicked();  
voidon_pushButton_3_clicked();  
voidon_pushButton_2_clicked();  
voidtick(qint64time);  
voidkeyPressEvent(QKeyEvent*k);  
voidwriteSettings();  
voidreadSettings();  
voidcloseEvent(QCloseEvent*ex);  
};  
#endif//MAINWINDOW_H 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
  • 118.
  • 119.
  • 120.
  • 121.
  • 122.
  • 123.
  • 124.
  • 125.
  • 126.
  • 127.
  • 128.
  • 129.
  • 130.
  • 131.
  • 132.
  • 133.
  • 134.
  • 135.
  • 136.
  • 137.
  • 138.
  • 139.
  • 140.
  • 141.
  • 142.
  • 143.
  • 144.
  • 145.
  • 146.
  • 147.
  • 148.
  • 149.
  • 150.
  • 151.
  • 152.
  • 153.
  • 154.
  • 155.
  • 156.
  • 157.
  • 158.
  • 159.
  • 160.
  • 161.
  • 162.
  • 163.
  • 164.
  • 165.
  • 166.
  • 167.
  • 168.
  • 169.
  • 170.
  • 171.
  • 172.
  • 173.
  • 174.
  • 175.
  • 176.
  • 177.
  • 178.
  • 179.
  • 180.
  • 181.
  • 182.
  • 183.
  • 184.
  • 185.
  • 186.
  • 187.
  • 188.
  • 189.
  • 190.
  • 191.
  • 192.
  • 193.
  • 194.
  • 195.
  • 196.
  • 197.
  • 198.
  • 199.
  • 200.
  • 201.
  • 202.
  • 203.
  • 204.
  • 205.
  • 206.
  • 207.
  • 208.
  • 209.
  • 210.
  • 211.
  • 212.
  • 213.
  • 214.
  • 215.
  • 216.
  • 217.
  • 218.
  • 219.
  • 220.
  • 221.
  • 222.
  • 223.
  • 224.
  • 225.
  • 226.
  • 227.
  • 228.
  • 229.
  • 230.
  • 231.
  • 232.
  • 233.
  • 234.
  • 235.
  • 236.
  • 237.
  • 238.
  • 239.
  • 240.
  • 241.
  • 242.
  • 243.
  • 244.
  • 245.
  • 246.
  • 247.
  • 248.
  • 249.
  • 250.
  • 251.
  • 252.
  • 253.
  • 254.
  • 255.
  • 256.
  • 257.
  • 258.
  • 259.
  • 260.
  • 261.
  • 262.
  • 263.
  • 264.
  • 265.
  • 266.
  • 267.
  • 268.
  • 269.
  • 270.
  • 271.
  • 272.
  • 273.
  • 274.
  • 275.
  • 276.
  • 277.
  • 278.
  • 279.
  • 280.
  • 281.
  • 282.
  • 283.
  • 284.
  • 285.
  • 286.
  • 287.
  • 288.
  • 289.
  • 290.
  • 291.
  • 292.
  • 293.
  • 294.
  • 295.
  • 296.
  • 297.
  • 298.
  • 299.
  • 300.
  • 301.
  • 302.
  • 303.
  • 304.
  • 305.
  • 306.
  • 307.
  • 308.
  • 309.
  • 310.
  • 311.
  • 312.
  • 313.
  • 314.
  • 315.
  • 316.
  • 317.
  • 318.
  • 319.
  • 320.
  • 321.
  • 322.
  • 323.
  • 324.
  • 325.
  • 326.
  • 327.
  • 328.
  • 329.
  • 330.
  • 331.
  • 332.
  • 333.
  • 334.
  • 335.
  • 336.
  • 337.
  • 338.
  • 339.
  • 340.
  • 341.
  • 342.
  • 343.
  • 344.
  • 345.
  • 346.
  • 347.
  • 348.
  • 349.
  • 350.
  • 351.
  • 352.
  • 353.

小结:详解QT媒体播放器代码案例实现的内容介绍完了,通过QT播放器的代码实现内容,希望本篇QT播放器的内容能对你有所帮助!

责任编辑:zhaolei 来源: CSDN博客
相关推荐

2011-09-06 11:08:21

QT播放器Mplayer

2011-06-24 10:21:11

Qt phonon 多媒体

2011-09-06 11:25:08

2010-01-25 09:43:02

Chrome OS媒体播放器

2023-08-26 19:07:40

VLC旋转视频

2015-10-19 17:28:00

MPlayer媒体播放器开源

2021-02-24 14:04:23

Linux媒体播放器桌面

2011-07-26 09:16:16

Windows媒体播放器

2010-03-04 09:34:35

Ubuntu Oper

2011-06-13 09:33:04

2022-12-13 07:27:22

Windows微软

2011-09-05 18:08:01

MTK音频播放器

2011-06-27 11:23:21

Qt 音乐播放器

2017-03-01 14:01:31

android多媒体音乐代码

2021-09-30 05:34:21

Windows 11操作系统微软

2022-01-05 20:09:29

Windows 11操作系统微软

2024-01-30 20:00:14

VLC字幕

2011-07-20 16:21:20

iPhone 视频 播放器

2018-05-25 14:37:58

2023-03-06 16:20:08

视频播放器VLC
点赞
收藏

51CTO技术栈公众号