精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解QT基于Mplayer媒體播放器應用教程

移動開發(fā)
QT基于Mplayer媒體播放器應用教程是本文要介紹的內(nèi)容,本文通過代碼來實現(xiàn)QT基于mplayer播放器的案例,具體代碼的實現(xiàn)來看內(nèi)容。

QT基于Mplayer媒體播放器應用教程是本文要介紹的內(nèi)容,主要是來了解并學習QT總媒體播放器的應用,本文通過代碼來實現(xiàn)QT基于mplayer播放器的案例,具體代碼的實現(xiàn)來看內(nèi)容。

播放器全屏音量時間進度都已經(jīng)實現(xiàn),追加快捷鍵設計...

  1. MAINWINDOW.H  
  2. #ifndefMAINWINDOW_H  
  3. #defineMAINWINDOW_H  
  4. #include  
  5. #include  
  6. #include  
  7. #include  
  8. #include  
  9. #include  
  10. namespaceUi{  
  11. classMainWindow;  
  12. }  
  13. classMainWindow:publicQMainWindow  
  14. {  
  15. Q_OBJECT  
  16. public:  
  17. explicitMainWindow(QWidget*parent=0);  
  18. ~MainWindow();  
  19. private:  
  20. Ui::MainWindow*ui;  
  21. QProcess*mplayerProcess;  
  22. QStringfilename;  
  23. QTimer*poller;  
  24. QWidget*w;  
  25. QDockWidget*shapesDockWidget1;  
  26. QDockWidget*shapesDockWidget2;  
  27. QTimer*interval;  
  28. QAction*at2;  
  29. QAction*at3;  
  30. QAction*at4;  
  31. QAction*at5;  
  32. QMenu*menu;  
  33. QPointm_dragPosition;  
  34. privateslots:  
  35. voidon_textEdit_3_textChanged();  
  36. voidon_spinBox_editingFinished();  
  37. voidon_spinBox_valueChanged(int);  
  38. voidwriteSettings();  
  39. voidreadSettings();  
  40. voidon_pushButton_10_clicked();  
  41. voidon_pushButton_9_clicked();  
  42. voidon_pushButton_6_clicked();  
  43. voidon_pushButton_5_clicked();  
  44. voidon_pushButton_3_clicked();  
  45. voidon_pushButton_2_clicked();  
  46. voidon_horizontalSlider_2_valueChanged(intvalue);  
  47. voidon_pushButton_8_clicked();  
  48. voidon_pushButton_clicked();  
  49. voidon_pushButton_7_clicked();  
  50. voidon_pushButton_4_clicked();  
  51. voidtimeLineChanged(intpos);  
  52. voidpollCurrentTime();  
  53. voidreject();  
  54. voidenterFullScreen();  
  55. voidenter();  
  56. voidcloseEvent(QCloseEvent*ex);  
  57. voidcontextMenuEvent(QContextMenuEvent*event);  
  58. voidmouseMoveEvent(QMouseEvent*event);  
  59. voidmousePressEvent(QMouseEvent*event);  
  60. booleventFilter(QObject*obj,QEvent*ev);  
  61. };  
  62.  
  63. #endif//MAINWINDOW_H  
  64. MAINWINDOW.cpp  
  65. #include"mainwindow.h"  
  66. #include"ui_mainwindow.h"  
  67. #include"QProcess"  
  68. #include  
  69. #include  
  70. #include  
  71. #include  
  72. #include  
  73. #include  
  74. #include  
  75. #include  
  76. #include  
  77. #include  
  78. #include  
  79. #include  
  80. #include  
  81. #include  
  82.  
  83. MainWindow::MainWindow(QWidget*parent):  
  84.  
  85. QMainWindow(parent),  
  86. ui(newUi::MainWindow)  
  87. {  
  88. ui->setupUi(this);  
  89.  
  90. mplayerProcess=newQProcess(this);  
  91. shapesDockWidget1=newQDockWidget(QString::fromLocal8Bit("播放界面"));  
  92. shapesDockWidget1->setWidget(ui->widget_4);  
  93. shapesDockWidget2=newQDockWidget(QString::fromLocal8Bit("播放時間"));  
  94. shapesDockWidget2->setWidget(ui->widget_2);  
  95.  
  96. //QWidget*wi=newQWidget(this);  
  97. //wi->resize(400,300);  
  98. addDockWidget(Qt::BottomDockWidgetArea,shapesDockWidget1);  
  99. addDockWidget(Qt::BottomDockWidgetArea,shapesDockWidget2);  
  100.  
  101. shapesDockWidget2->show();  
  102. QVBoxLayout*vLayout=newQVBoxLayout(this);  
  103. vLayout->addWidget(ui->widget);  
  104. w=newQWidget(this);  
  105. w->setLayout(vLayout);  
  106. this->setCentralWidget(w);  
  107. poller=newQTimer(this);  
  108. interval=newQTimer(this);  
  109. connect(interval,SIGNAL(timeout()),this,SLOT(reject()));  
  110. interval->start(1000);  
  111. connect(ui->horizontalSlider,SIGNAL(sliderMoved(int)),this,SLOT(timeLineChanged(int)));  
  112. connect(mplayerProcess,SIGNAL(readyReadStandardOutput()),this,SLOT(reject()));  
  113. connect(poller,SIGNAL(timeout()),this,SLOT(pollCurrentTime()));  
  114. //setWindowOpacity(0.95);  
  115. QPaletteplt=palette();  
  116. //plt.setColor(QPalette::Background,QColor("Black"));  
  117. plt.setColor(QPalette::Background,QColor("Grey"));  
  118. this->setPalette(plt);  
  119. ui->label_4->setText(QString::fromLocal8Bit("不是全屏"));  
  120. w->setAutoFillBackground(true);  
  121. QAction*at1=newQAction("進入全屏",this);  
  122. this->addAction(at1);  
  123. this->setAcceptDrops(true);  
  124. at1->setShortcuts(QList()< 
  125. //connect(at1,SIGNAL(triggered()),this,SLOT(enterFullScreen()));  
  126. at2=newQAction(QString::fromLocal8Bit("暫停/開始"),this);  
  127. this->addAction(at2);  
  128. this->setAcceptDrops(true);  
  129. at2->setShortcuts(QList()< 
  130. connect(at2,SIGNAL(triggered()),this,SLOT(enter()));  
  131. at3=newQAction(QString::fromLocal8Bit("全屏"),this);  
  132. this->addAction(at3);  
  133. this->setAcceptDrops(true);  
  134. at3->setShortcuts(QList()< 
  135. connect(at3,SIGNAL(triggered()),ui->pushButton_5,SLOT(click()));  
  136. at4=newQAction(QString::fromLocal8Bit("退出全屏"),this);  
  137. this->addAction(at4);  
  138. this->setAcceptDrops(true);  
  139. at4->setShortcuts(QList()< 
  140. connect(at4,SIGNAL(triggered()),ui->pushButton_6,SLOT(click()));  
  141. at5=newQAction(QString::fromLocal8Bit("打開"),this);  
  142. this->addAction(at5);  
  143. this->setAcceptDrops(true);  
  144. at5->setShortcuts(QList()< 
  145. connect(at5,SIGNAL(triggered()),ui->pushButton_4,SLOT(click()));  
  146. QAction*at6=newQAction("前進",this);  
  147. this->addAction(at6);  
  148. this->setAcceptDrops(true);  
  149. at6->setShortcuts(QList()< 
  150. connect(at6,SIGNAL(triggered()),ui->pushButton_9,SLOT(click()));  
  151. QAction*at7=newQAction("后退",this);  
  152. this->addAction(at7);  
  153. this->setAcceptDrops(true);  
  154. at7->setShortcuts(QList()< 
  155. connect(at7,SIGNAL(triggered()),ui->pushButton_10,SLOT(click()));  
  156. QAction*at8=newQAction("提高音量",this);  
  157. this->addAction(at8);  
  158. this->setAcceptDrops(true);  
  159. at8->setShortcuts(QList()< 
  160. connect(at8,SIGNAL(triggered()),ui->pushButton_2,SLOT(click()));  
  161. QAction*at9=newQAction("降低",this);  
  162. this->addAction(at9);  
  163. this->setAcceptDrops(true);  
  164. at9->setShortcuts(QList()< 
  165. connect(at9,SIGNAL(triggered()),ui->pushButton_3,SLOT(click()));  
  166. this->readSettings();  
  167. w->installEventFilter(this);  
  168. intx=(QApplication::desktop()->width()-this->width())/2;  
  169. inty=(QApplication::desktop()->height()-this->height())/2;  
  170. this->move(x,y);  
  171. this->resize(800,600);  
  172. //QDesktopWidget*desktop=QApplication::desktop();  
  173. //intwidth=desktop->width();  
  174. //intheight=desktop->height();  
  175. }  
  176. voidMainWindow::enterFullScreen()  
  177. {  
  178. mplayerProcess->write("vo_fullscreen/n");  
  179.  
  180. }  
  181. voidMainWindow::enter()  
  182. {  
  183. if(ui->label_6->text()==QString::fromLocal8Bit("開始"))  
  184. {  
  185. mplayerProcess->write("pause/n");  
  186.  
  187. poller->stop();  
  188. ui->label_6->setText(QString::fromLocal8Bit("暫停"));  
  189. }  
  190. elseif(ui->label_6->text()==QString::fromLocal8Bit("暫停"))  
  191. {  
  192. mplayerProcess->write("pause/n");  
  193. mplayerProcess->write("get_time_length/n");  
  194. poller->start(10);  
  195. ui->label_6->setText(QString::fromLocal8Bit("開始"));  
  196. }  
  197. }  
  198.  
  199. MainWindow::~MainWindow()  
  200. {  
  201. deleteui;  
  202. }  
  203.  
  204. voidMainWindow::pollCurrentTime()  
  205.  
  206. {  
  207. mplayerProcess->write("get_time_pos/n");  
  208. //qDebug()text();  
  209. //log->append(QString(buffer));  
  210. ui->textEdit->setText(QString::number(ui->horizontalSlider->maximum()/3600)
  211. +":"+QString::number((ui->horizontalSlider->maximum()/60)%60)+":"
  212. +QString::number(ui->horizontalSlider->maximum()%60));  
  213. ui->textEdit_2->setText(QString::number(ui->horizontalSlider->value()/3600)
  214. +":"+QString::number((ui->horizontalSlider->value()/60)%60)+":"+QString::number(ui->horizontalSlider->value()%60));  
  215. }  
  216.  
  217. voidMainWindow::reject()  
  218. {  
  219.  
  220. this->setFocus();  
  221. //ui->label_5->setText(QString::number(ui->horizontalSlider->maximum()/3600)+":"
  222. +QString::number((ui->horizontalSlider->maximum()/60)%60)+":"
  223. +QString::number(ui->horizontalSlider->maximum()%60));  
  224. //ui->label_5->setText(QString::number(ui->horizontalSlider->value()/3600)+":"
  225. +QString::number((ui->horizontalSlider->value()/60)%60)+":"
  226. +QString::number(ui->horizontalSlider->value()%60));  
  227.  
  228. while(mplayerProcess->canReadLine())  
  229.  
  230. {  
  231. QByteArraybuffer(mplayerProcess->readLine());  
  232. ui->textEdit_3->append(QString(buffer));  
  233. //qDebug()< 
  234. //log->append(QString(buffer));  
  235. //Onvérifiesionaeudesréponses  
  236. //réponseàget_video_resolution:ANS_VIDEO_RESOLUTION='x' 
  237. if(buffer.startsWith("ANS_VIDEO_RESOLUTION"))  
  238. {  
  239. buffer.remove(0,21);//vireANS_VIDEO_RESOLUTION=  
  240.  
  241. buffer.replace(QByteArray("'"),QByteArray(""));  
  242. buffer.replace(QByteArray(""),QByteArray(""));  
  243. buffer.replace(QByteArray("/n"),QByteArray(""));  
  244. buffer.replace(QByteArray("/r"),QByteArray(""));  
  245. intsepIndex=buffer.indexOf('x');  
  246. intresX=buffer.left(sepIndex).toInt();  
  247. intresY=buffer.mid(sepIndex+1).toInt();  
  248. ui->widget->setMinimumSize(resX,resY);  
  249. }  
  250.  
  251. //réponseàget_time_length:ANS_LENGTH=xx.yy  
  252. elseif(buffer.startsWith("ANS_LENGTH"))  
  253. {  
  254. buffer.remove(0,11);//vireANS_LENGTH=  
  255.  
  256. buffer.replace(QByteArray("'"),QByteArray(""));  
  257. buffer.replace(QByteArray(""),QByteArray(""));  
  258. buffer.replace(QByteArray("/n"),QByteArray(""));  
  259. buffer.replace(QByteArray("/r"),QByteArray(""));  
  260. floatmaxTime=buffer.toFloat();  
  261. ui->horizontalSlider->setMaximum(static_cast(maxTime+1));  
  262. }  
  263. //réponseàget_time_pos:ANS_TIME_POSITION=xx.y  
  264. elseif(buffer.startsWith("ANS_TIME_POSITION"))  
  265. {  
  266. buffer.remove(0,18);//vireANS_TIME_POSITION=  
  267. buffer.replace(QByteArray("'"),QByteArray(""));  
  268. buffer.replace(QByteArray(""),QByteArray(""));  
  269. buffer.replace(QByteArray("/n"),QByteArray(""));  
  270. buffer.replace(QByteArray("/r"),QByteArray(""));  
  271. floatcurrTime=buffer.toFloat();  
  272. ui->horizontalSlider->setValue(static_cast(currTime+1));  
  273. }  
  274. }  
  275. }  
  276. voidMainWindow::timeLineChanged(intpos)  
  277. {  
  278. mplayerProcess->write(QString("seek"+QString::number(pos)+"2/n").toUtf8());  
  279. }  
  280. voidMainWindow::on_pushButton_4_clicked()  
  281. {  
  282. filename=QFileDialog::getOpenFileName(this,QString::fromLocal8Bit("文件類型"),".",QString::fromLocal8Bit("文問類型(*.*)"));  
  283. if(filename!=NULL)  
  284. {  
  285. poller->stop();  
  286. mplayerProcess->close();  
  287. this->setWindowTitle(filename);  
  288. ui->pushButton_7->setEnabled(true);  
  289. mplayerProcess=newQProcess(this);  
  290. QStringexefile=QCoreApplication::applicationDirPath()+"/mplayer/mplayer.exe";  
  291. qDebug()< 
  292. //qDebug()< 
  293. QStringListargs;  
  294. args<<"-slave";  
  295. //Etonveutnepasavoirtropdechoseparser:)  
  296. args<<"-zoom";  
  297. //args<<"-quiet";  
  298. //args<<"-xy1024";  
  299. //args<<"-wid"<(w->winId()))<<"-x"<<"1680"<<"-y"<<"1050";  
  300. args<<"-wid"<(w->winId()));  
  301. args<<"-vo"<<"direct3d";  
  302. //args<<"-vo"<<"gl";  
  303. //vo=gl 
  304. //direct3d  
  305. //mplayer-fs-zoom-vofbdev-xy1024filename  
  306. args< 
  307. mplayerProcess->setProcessChannelMode(QProcess::MergedChannels);  
  308. mplayerProcess->start(exefile,args);  
  309. if(!mplayerProcess->waitForStarted(3000))  
  310. {  
  311. qDebug("allez,cherchelebug:o");  
  312. }  
  313. //Onrécupèrelesinfosdebase  
  314. mplayerProcess->write("get_video_resolution/n");  
  315. mplayerProcess->write("get_time_length/n");  
  316. mplayerProcess->write("get_time_length/n");  
  317. //mplayerProcess->write("get_time_pos/n");  
  318. poller->start(10);  
  319. //mplayerProcess->write("pause/n");  
  320. ui->label_6->text()=="開始";  
  321. }  
  322. }  
  323. voidMainWindow::on_pushButton_7_clicked()  
  324. {  
  325. if(ui->label_6->text()==QString::fromLocal8Bit("開始"))  
  326. {  
  327. mplayerProcess->write("pause/n");  
  328. poller->stop();  
  329. ui->label_6->setText(QString::fromLocal8Bit("暫停"));  
  330. }  
  331. elseif(ui->label_6->text()==QString::fromLocal8Bit("暫停"))  
  332. {  
  333. mplayerProcess->write("pause/n");  
  334. mplayerProcess->write("get_time_length/n");  
  335. poller->start(10);  
  336. ui->label_6->setText(QString::fromLocal8Bit("開始"));  
  337. }  
  338. }  
  339. voidMainWindow::on_pushButton_clicked()  
  340. {  
  341.  
  342. mplayerProcess->write("vo_fullscreen/n");  
  343. }  
  344. voidMainWindow::on_pushButton_8_clicked()  
  345. {  
  346. QMessageBox::information(this,QString::fromLocal8Bit("AboutMdieaPlayer"),  
  347.  
  348. QString::fromLocal8Bit("快捷鍵說明:/n打開:A/n暫停/開始:space/n全屏:D/n取消全屏:S/n快進:
  349. right/n后退:left/n音量提高:top/n音量降低:down/nID:Jammy基于mplayer開發(fā)版本0.06"));  
  350. }  
  351. voidMainWindow::on_horizontalSlider_2_valueChanged(intvalue)  
  352. {  
  353. inti;  
  354. QStringstr;QByteArraystr1;  
  355. mplayerProcess->write("volume"+str1+"/n");  
  356. i=-(40-value);str=QString::number(i);  
  357. strstr1=str.toAscii();  
  358. mplayerProcess->write("volume"+str1+"/n");  
  359. //qDebug()< 
  360. }  
  361. voidMainWindow::on_pushButton_2_clicked()  
  362. {  
  363. mplayerProcess->write("volume+1/n");  
  364. }  
  365. voidMainWindow::on_pushButton_3_clicked()  
  366. {  
  367. mplayerProcess->write("volume-1/n");  
  368. }  
  369. voidMainWindow::on_pushButton_5_clicked()  
  370. {  
  371. this->setWindowFlags(Qt::Window);  
  372. w->setWindowFlags(Qt::FramelessWindowHint);  
  373. this->showFullScreen();  
  374. shapesDockWidget1->hide();  
  375. shapesDockWidget2->hide();  
  376. ui->label_4->setText(QString::fromLocal8Bit("全屏"));  
  377. }  
  378. voidMainWindow::on_pushButton_6_clicked()  
  379. {  
  380. this->setWindowFlags(Qt::Window);  
  381. this->resize(800,600);  
  382. //w->setWindowFlags(Qt::FramelessWindowHint);  
  383. this->showNormal();  
  384. shapesDockWidget1->show();  
  385. shapesDockWidget2->show();  
  386. intx=(QApplication::desktop()->width()-this->width())/2;  
  387. inty=(QApplication::desktop()->height()-this->height())/2;  
  388. this->move(x,y);  
  389. ui->label_4->setText(QString::fromLocal8Bit("不是全屏"));  
  390. }  
  391. voidMainWindow::on_pushButton_9_clicked()  
  392. {  
  393. QStringstr;  
  394. str=QString::number(ui->spinBox->value());  
  395. mplayerProcess->write("seek+"+str.toAscii()+"/n");  
  396. qDebug()< 
  397. qDebug()<<"seek+"+str.toAscii()+"/n";  
  398. }  
  399. voidMainWindow::on_pushButton_10_clicked()  
  400. {  
  401. QStringstr;  
  402. str=QString::number(ui->spinBox->value());  
  403. mplayerProcess->write("seek-"+str.toAscii()+"/n");  
  404. }  
  405. voidMainWindow::on_spinBox_valueChanged(int)  
  406. {  
  407. w->setFocus();  
  408. }  
  409. voidMainWindow::on_spinBox_editingFinished()  
  410. {  
  411. w->setFocus();  
  412. }  
  413. voidMainWindow::closeEvent(QCloseEvent*ex)  
  414. {  
  415. //inta=QMessageBox::information(NULL,
  416. QString::fromLocal8Bit("對話框"),
  417. QString::fromLocal8Bit("是否需要退出"),
  418. QString::fromLocal8Bit("確定"),
  419. QString::fromLocal8Bit("取消"),NULL,0,-1);  
  420. //if(a==0)  
  421. //{  
  422. writeSettings();  
  423. //ex->accept();  
  424. //}  
  425. //elseif(a==1)  
  426. //{  
  427. //ex->ignore();  
  428. //}  
  429. }  
  430. voidMainWindow::writeSettings()  
  431. {  
  432. QSettingssettings("Software","IconEditor");  
  433. settings.beginGroup("mainWindow");  
  434. settings.setValue("size",size());  
  435. settings.setValue("state",saveState());  
  436. settings.endGroup();  
  437. }  
  438. voidMainWindow::readSettings()  
  439. {  
  440. QSettingssettings("Software","IconEditor");  
  441. settings.beginGroup("mainWindow");  
  442. resize(settings.value("size").toSize());  
  443. restoreState(settings.value("state").toByteArray());  
  444. settings.endGroup();  
  445. }  
  446. voidMainWindow::contextMenuEvent(QContextMenuEvent*event)  
  447. {  
  448. shapesDockWidget1->show();  
  449. shapesDockWidget2->show();  
  450. //QCursorcur=this->cursor();  
  451. menu=newQMenu(this);  
  452. menu->addAction(at5);  
  453. menu->addAction(at2);  
  454. menu->addAction(at3);  
  455. menu->addAction(at4);  
  456. //menu->exec(cur.pos());  
  457. menu->exec(event->globalPos());//  
  458. //this->setContextMenuPolicy(Qt::ActionsContextMenu);  
  459. }  
  460. voidMainWindow::mouseMoveEvent(QMouseEvent*event)  
  461. {  
  462. //if(ui->label_4->text()==QString::fromLocal8Bit("不是全屏"))  
  463. //{  
  464. //if(event->buttons()&Qt::LeftButton){  
  465. //move(event->globalPos()-m_dragPosition);  
  466. ////move(event->globalPos()-m_dragPosition);  
  467. //event->accept();  
  468. //}  
  469. //}  
  470. }  
  471. voidMainWindow::mousePressEvent(QMouseEvent*event)  
  472. {  
  473. //if(ui->label_4->text()==QString::fromLocal8Bit("不是全屏"))  
  474. //{  
  475. //if(event->button()==Qt::LeftButton){  
  476. //m_dragPosition=event->globalPos()-frameGeometry().topLeft();  
  477. //ui->widget->move(m_dragPosition);  
  478. //event->accept();  
  479. //}  
  480. //}  
  481. }  
  482. boolMainWindow::eventFilter(QObject*obj,QEvent*event)  
  483. {  
  484. if(obj==w){  
  485. if(event->type()==QEvent::MouseButtonDblClick){  
  486. QMouseEvent*ev=static_cast(event);  
  487. if(ev->buttons()&Qt::LeftButton)  
  488. {  
  489. if(ui->label_4->text()==QString::fromLocal8Bit("不是全屏"))  
  490. {  
  491. this->setWindowFlags(Qt::Window);  
  492. w->setWindowFlags(Qt::FramelessWindowHint);  
  493. this->showFullScreen();  
  494. shapesDockWidget1->hide();  
  495. shapesDockWidget2->hide();  
  496. ui->label_4->setText(QString::fromLocal8Bit("全屏"));  
  497. }  
  498. elseif(ui->label_4->text()==QString::fromLocal8Bit("全屏"))  
  499. {  
  500. this->setWindowFlags(Qt::Window);  
  501. this->resize(800,600);  
  502. //w->setWindowFlags(Qt::FramelessWindowHint);  
  503. this->showNormal();  
  504. shapesDockWidget1->show();  
  505. shapesDockWidget2->show();  
  506. intx=(QApplication::desktop()->width()-this->width())/2;  
  507. inty=(QApplication::desktop()->height()-this->height())/2;  
  508. this->move(x,y);  
  509. ui->label_4->setText(QString::fromLocal8Bit("不是全屏"));  
  510. }  
  511. //m_dragPosition=ev->globalPos()-frameGeometry().topLeft();  
  512. //ev->accept();  
  513. }  
  514. returntrue;  
  515. }  
  516. elseif(event->type()==QEvent::MouseButtonPress){  
  517. QMouseEvent*ev=static_cast(event);  
  518. if(ev->buttons()&Qt::LeftButton)  
  519. {  
  520. if(ui->label_4->text()==QString::fromLocal8Bit("全屏"))  
  521. {  
  522. shapesDockWidget1->hide();  
  523. shapesDockWidget2->hide();  
  524. }  
  525. elseif(ui->label_4->text()==QString::fromLocal8Bit("不是全屏"))  
  526. {  
  527. m_dragPosition=ev->globalPos()-frameGeometry().topLeft();  
  528. ev->accept();  
  529. w->setFocus();  
  530. }  
  531. //m_dragPosition=ev->globalPos()-frameGeometry().topLeft();  
  532. //ev->accept();  
  533. }  
  534. returntrue;  
  535. }elseif(event->type()==QEvent::MouseMove){  
  536. QMouseEvent*ev=static_cast(event);  
  537. if(ev->buttons()&Qt::LeftButton){  
  538. if(ui->label_4->text()==QString::fromLocal8Bit("不是全屏"))  
  539. {  
  540. //move(event->globalPos()-m_dragPosition);  
  541. move(ev->globalPos()-m_dragPosition);  
  542. ev->accept();  
  543. w->setFocus();  
  544. }  
  545. }  
  546. }  
  547. else{  
  548. returnfalse;  
  549. }  
  550. }  
  551. else{  
  552.  
  553. //passtheeventontotheparentclass  
  554. returnQMainWindow::eventFilter(obj,event);  
  555. }  
  556. returntrue;  
  557. }  
  558. voidMainWindow::on_textEdit_3_textChanged()  
  559. {  
  560. w->setFocus();  
  561. }  
  562.  
  563. **************************************************  
  564. main.cpp  
  565. #include  
  566. #include"mainwindow.h"  
  567. intmain(intargc,char*argv[])  
  568. {  
  569. QApplicationa(argc,argv);  
  570. MainWindoww;  
  571. w.show();  
  572. returna.exec();  

小結:詳解QT基于Mplayer媒體播放器應用教程的內(nèi)容介紹完了,希望通過學習QT播放器的案例的實現(xiàn),能對你有所幫助。更多關于QT的相關內(nèi)容,請單擊QT開發(fā)頻道。

責任編輯:zhaolei 來源: CDDN博客
相關推薦

2011-09-06 10:46:19

QT播放器

2015-10-19 17:28:00

MPlayer媒體播放器開源

2011-06-24 10:21:11

Qt phonon 多媒體

2011-09-06 11:25:08

2011-06-10 13:42:50

QT mplayer 播放器

2010-01-25 09:43:02

Chrome OS媒體播放器

2023-08-26 19:07:40

VLC旋轉(zhuǎn)視頻

2021-02-24 14:04:23

Linux媒體播放器桌面

2011-07-26 09:16:16

Windows媒體播放器

2011-07-04 15:13:31

QT MPlayer 移植

2011-06-10 14:06:32

QT mplayer

2010-03-04 09:34:35

Ubuntu Oper

2022-12-13 07:27:22

Windows微軟

2011-06-13 09:33:04

2011-06-27 11:23:21

Qt 音樂播放器

2021-09-30 05:34:21

Windows 11操作系統(tǒng)微軟

2009-02-17 23:41:43

Mplayer播放器常見問題

2022-01-05 20:09:29

Windows 11操作系統(tǒng)微軟

2015-05-21 15:25:42

VLC播放器

2011-06-13 11:24:55

QT MPlayer 移植
點贊
收藏

51CTO技術棧公眾號

黄色片视频免费观看| 日本午夜精品一区二区| 欧美日韩精品在线观看视频| 一区二区在线视频观看| 同产精品九九九| 日韩亚洲不卡在线| 精品人妻无码一区二区色欲产成人| 狠久久av成人天堂| 亚洲女人天堂网| 五月天视频在线观看| 97人澡人人添人人爽欧美| 国产午夜一区二区三区| 亚洲一区二区在线| 国产中文字幕视频| 亚洲一区色图| 亚洲香蕉在线观看| 美女扒开腿免费视频| 高清av一区二区三区| 亚洲一区二区视频在线观看| 欧美性bbwbbwbbwhd| 国内毛片毛片毛片毛片| 视频在线观看国产精品| 久久99久久久久久久噜噜| 成人性生交大免费看| 日本一区影院| 精品视频免费在线| 日韩欧美精品在线观看视频| 99热国产在线| 中文字幕在线不卡| 久久国产精品精品国产色婷婷 | 欧美视频中文字幕| 搞av.com| av免费在线免费观看| 久久久久久一二三区| 成人综合电影| 国产三级午夜理伦三级| 免费观看久久久4p| 欧美在线亚洲在线| 精品在线视频免费| 欧美阿v一级看视频| 在线丨暗呦小u女国产精品| 漂亮人妻被黑人久久精品| 2019中文亚洲字幕| 欧美三级在线看| 中文字幕无码不卡免费视频| 成人bbav| 亚洲国产日日夜夜| 99国产精品白浆在线观看免费| av大片在线播放| 国产片一区二区三区| 美乳视频一区二区| 青青操在线视频| 91在线观看视频| 精品综合在线| 日韩在线免费播放| 97aⅴ精品视频一二三区| 国产伦理久久久| 亚洲黄色在线免费观看| 日本视频在线观看一区二区三区| 国产日韩三级| 日韩精品一区二区三区在线播放| 在线视频观看一区二区| 四虎国产精品免费久久| 欧美日韩精品福利| 精品久久久99| 国产精久久一区二区| 欧美精品电影在线播放| 久久久精品高清| 亚洲欧洲一二区| 制服丝袜在线91| 日本xxxx免费| 国产精品极品国产中出| 国产视频在线观看一区二区| 亚洲第一香蕉网| av伊人久久| 日韩在线观看免费全| av激情在线观看| 狠久久av成人天堂| 欧美综合一区第一页| 无码人妻精品一区二| 日本中文字幕不卡| 成人美女免费网站视频| www日本在线| 99久久99久久精品免费看蜜桃| 久久精品综合一区| 成人精品一区二区三区免费| 国产精品成人在线观看| 台湾无码一区二区| 自拍视频在线看| 欧美性感一区二区三区| 男生和女生一起差差差视频| 国产精品主播在线观看| 亚洲成年人在线播放| xxxx日本黄色| 午夜精品国产| 欧亚精品中文字幕| a天堂视频在线| 久久人人97超碰com| 一本一本a久久| www成人免费观看| 欧美性猛交一区二区三区精品| 无人码人妻一区二区三区免费| 欧美一级一片| 久久精品中文字幕电影| 国外色69视频在线观看| av女人的天堂| 欧美精品九九| 国产成人精品免费视频| 精品久久久无码中文字幕| 久久久另类综合| 樱空桃在线播放| 老司机成人影院| 欧美xxxx在线观看| 少妇的滋味中文字幕bd| 亚洲国产高清一区| 国产精品久久中文| 日韩一卡二卡在线| 成人免费在线视频| 欧美成人精品欧美一级乱| 精品一区二区三区亚洲| 国产一区二区三区直播精品电影| 久久久久久国产精品视频| 青娱乐精品在线视频| 国产一区二区在线网站 | 欧美成年人在线观看| 伊人中文字幕在线观看| 成人性生交大片免费| 亚洲欧美精品| 欧美日韩免费看片| 亚洲国内高清视频| 久草视频手机在线| 美女在线视频一区| 日本精品一区二区三区视频| 9999在线视频| 日韩一本二本av| 国产黄色片在线| 玖玖国产精品视频| 农村寡妇一区二区三区| 91超碰在线播放| 日韩欧美专区在线| sm捆绑调教视频| 青青草97国产精品免费观看 | 国产99久久久欧美黑人| 神马一区二区三区| 一区二区久久久| 佐山爱在线视频| 99久久综合| 成人动漫网站在线观看| 成年人在线观看| 在线看日本不卡| 97在线观看免费视频| 日日摸天天添天天添破| 激情文学综合插| 天天干天天操天天干天天操| 欧美高清你懂的| 中日韩美女免费视频网站在线观看 | 久久久亚洲欧洲日产| 欧美人成在线视频| 99在线精品视频免费观看软件| 国产精品丝袜91| 亚洲最大综合网| 欧美在线免费看视频| 国产精品成av人在线视午夜片| 国产在线免费观看| 欧美在线观看视频一区二区三区| 免费黄在线观看| 久久精品免费看| 熟女视频一区二区三区| 精品视频一区二区三区| 色综合五月天导航| 亚洲 国产 欧美 日韩| 色综合婷婷久久| 中文字幕有码在线播放| 久久电影网电视剧免费观看| 男女h黄动漫啪啪无遮挡软件| 国产一区二区av在线| 欧美大片免费看| 亚州精品国产精品乱码不99按摩| 欧美性猛交xxxx乱大交极品| 国产一二三四五区| 精品在线播放免费| 国产91在线亚洲| 色爱综合av| 国产精品入口福利| 亚洲www色| 亚洲免费视频观看| 97精品人妻一区二区三区| 亚洲精品国产a久久久久久| 国产chinese中国hdxxxx| 免费看的黄色欧美网站| 一本一道久久a久久精品综合 | 884aa四虎影成人精品一区| 青青草原免费观看| 91香蕉视频污| 日本人69视频| 日韩视频精品在线观看| 亚洲韩国在线| 国产h视频在线观看| 亚洲黄色高清| 亚洲永久免费观看| 中文字幕乱码中文乱码51精品| 国产一区二区三区四区福利| 国产高清在线观看视频| 亚欧色一区w666天堂| 成人午夜免费影院| 成人动漫av在线| 日韩中文字幕a| 野花国产精品入口| 国产精品久久成人免费观看| 白嫩白嫩国产精品| 国产精品美女视频网站| 美女的胸无遮挡在线观看| www.xxxx欧美| 日韩av地址| 日韩美女视频在线| 中文字幕av影视| 精品成人av一区| 日韩视频中文字幕在线观看| 久久蜜桃av一区精品变态类天堂| 波多野结衣网页| 天堂av在线一区| 久久久久99精品成人片| 国产成人三级| 国产亚洲福利社区| 欧美经典一区| 成人午夜激情免费视频| 欧美黄色三级| 欧美在线国产精品| 久久香蕉一区| 久久久精品中文字幕| 国产高清在线看| 亚洲精品中文字幕女同| 黄色福利在线观看| 日韩欧美一二区| 国产精品久久免费| 欧美三区在线观看| 成年人晚上看的视频| 欧美视频一区二区三区…| 精品无码m3u8在线观看| 一区二区三区在线观看国产 | 全国男人的天堂网| 日韩欧美专区在线| 精品人妻午夜一区二区三区四区 | 亚洲影视资源网| 劲爆欧美第一页| 亚洲人成网站影音先锋播放| 午夜黄色福利视频| 中文字幕一区二区三区在线观看 | 久久精品最新地址| av电影在线网| 日韩中文字幕亚洲| √天堂资源地址在线官网| 亚洲午夜小视频| jizz日韩| 久久色在线播放| 免费av在线网站| 久久影院在线观看| 午夜影院免费在线| 久久久久久久色| 精品众筹模特私拍视频| 欧美激情中文网| 超碰在线cao| 国产成人高潮免费观看精品| 国精产品一区一区三区四川| 国产精品极品美女在线观看免费| 亚洲四虎影院| 91精品久久久久久久久久久| 国产成人免费av一区二区午夜| 91在线|亚洲| 超碰在线一区| 欧美在线日韩精品| 香蕉综合视频| 国产免费裸体视频| 亚洲一区一卡| 天天干天天草天天| 国产麻豆精品在线观看| 精品人妻二区中文字幕| 久久夜色精品国产欧美乱极品| 亚洲AV无码片久久精品| 国产精品色哟哟网站| 国产精品 欧美激情| 精品国产91久久久久久| 中文天堂在线资源| 日韩视频免费观看高清完整版| 欧美 日韩 国产 精品| 亚洲欧洲日韩国产| 黄色片网站在线观看| 久久久在线观看| 日本中文字幕一区二区| 91在线看网站| 亚洲图区在线| 国产av第一区| 久久亚洲二区| 亚洲性图第一页| 国产欧美日韩一区二区三区在线观看| 亚洲综合图片一区| 亚洲成人av电影在线| 免费看av在线| 亚洲精品mp4| 日本在线观看免费| 国模精品视频一区二区| 精品欧美一区二区三区在线观看 | 午夜精品久久久久99热蜜桃导演| 美女黄色片网站| 美女精品在线观看| 欧洲在线免费视频| 97精品久久久久中文字幕| 朝桐光av在线| 在线精品视频免费播放| 欧美 日韩 国产 精品| 久久九九全国免费精品观看| 亚洲一二三四| 国产九色精品| 亚洲精品午夜av福利久久蜜桃| 国产亚洲天堂网| 国产福利一区二区三区| 色www亚洲国产阿娇yao| 欧美日韩一区二区在线 | 欧美不卡高清一区二区三区| 成人欧美一区二区三区在线观看| 久久国产亚洲精品| 国产三区在线视频| 成人精品视频.| 1024手机在线视频| 欧美日韩专区在线| 毛片网站在线| 97视频人免费观看| 中文字幕区一区二区三| 男女h黄动漫啪啪无遮挡软件| 日韩在线播放一区二区| 国产吞精囗交久久久| 午夜欧美视频在线观看| av中文字幕第一页| 久久亚洲春色中文字幕| 99久久久国产精品免费调教网站| 久久久久国产精品视频| 18成人免费观看视频| 欧美熟妇另类久久久久久多毛| 中文字幕一区二区三区色视频| 国产精品国产精品国产| 亚洲视频专区在线| 欧美成人黑人| 日韩国产伦理| 日韩国产一区二| 免费在线观看a视频| 在线观看不卡视频| 大乳在线免费观看| 国产精品福利久久久| 精品精品99| 亚洲精品视频导航| 国产精品免费免费| 亚洲中文一区二区三区| 亚洲最新中文字幕| 国产在线|日韩| 亚洲乱码一区二区三区| 美女国产一区二区三区| 三级黄色免费观看| 欧美裸体一区二区三区| 黄色在线播放网站| 91在线免费看片| 亚洲国产精品一区制服丝袜| 国产女人18毛片水真多18| 精品动漫一区二区| 精品三级久久久久久久电影聊斋| 国产精品国产三级国产aⅴ9色 | 男女激情免费视频| 岛国精品在线观看| 青青草av在线播放| 一区二区三区中文免费| 自拍偷拍中文字幕| 91福利在线免费观看| 最新国产在线观看| 亚洲xxx自由成熟| 狠狠干综合网| 女~淫辱の触手3d动漫| 在线观看日产精品| www.在线视频| 久草热久草热线频97精品| 天堂一区二区在线免费观看| 美国精品一区二区| 亚洲精品在线电影| 日本韩国欧美| 好色先生视频污| 不卡的av电影| 欧美高清69hd| 九色精品免费永久在线| 亚洲成在人线免费观看| 欧美一级裸体视频| 一区二区三区四区激情| 青青久草在线| 亚洲一区中文字幕| 亚洲影院一区| 男人晚上看的视频| 日韩成人在线观看| 色999韩欧美国产综合俺来也| 日韩 欧美 视频| 中文字幕 久热精品 视频在线| 精品人妻av一区二区三区| 国产成人精品最新| 国产精品激情电影|