亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用Qt做一個簡易音樂播放器【Phonon淺談--續】

系統 1784 0

<!-- [if !mso]> <mce:style><!-- v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} --> <!-- [endif]--><!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if !mso]> <object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui> </object> <mce:style><!-- st1/:*{behavior:url(#ieooui) } --> <!-- [endif]--> <!-- /* Font Definitions */ @font-face {font-family:宋體; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@宋體"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋體; mso-font-kerning:1.0pt;} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1266185948; mso-list-type:hybrid; mso-list-template-ids:1862710722 981369336 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-text:%1、; mso-level-tab-stop:39.0pt; mso-level-number-position:left; margin-left:39.0pt; text-indent:-18.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} --> <!-- [if gte mso 10]> <mce:style><!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} --> <!-- [endif]-->

2010-2-13 使用 Qt 做一個簡易音樂播放器【 Phonon 淺談 -- 續】

在第一篇 Phonon 淺談 中提及到了 Phonon 這個多媒體框架的一些基本知識,于是想著結合這些基本知識來實踐一番,做一個簡單的音樂播放器。

【步驟一】

新建一個 Qt Gui 工程,在建立過程中需要包含 Phonon 模塊,之后生成文件如下圖:

<!-- [if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:148.5pt; height:115.5pt'> <v:imagedata src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.jpg" mce_src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.jpg" o:title="0"/> </v:shape><![endif]--><!-- [if !vml]--> 使用Qt做一個簡易音樂播放器【Phonon淺談--續】 <!-- [endif]-->

Qt Gui 工程會生成一個 ui 文件,在這里是 mainwindow.ui 。雙擊 mainwindow.ui 進行一番簡單的布局,如下圖:

<!-- [if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75" style='width:219pt;height:252.75pt'> <v:imagedata src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image002.jpg" mce_src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image002.jpg" o:title="2"/> </v:shape><![endif]--><!-- [if !vml]--> 使用Qt做一個簡易音樂播放器【Phonon淺談--續】 <!-- [endif]-->

關于這個 ui 界面,中央位置是一個 QListWidget ,用來顯示音樂文件列表;下面一欄紅色矩形是一個 QVBoxLayout 垂直布局部件,用來確定等會要建立的播放進度條的位置;而下面則是四個相關控制按鈕。

大概地說, Phonon 的工作機制是使用 MediaObject 來管理 MediaSource 即源文件,通過 Path 連接到 AudioOutput ,最后是由 AudioOutput 將數據發送到相關物理設備。

于是有了步驟二。

【步驟二】

步驟一是用來實現基本的界面,而步驟二是用代碼實現具體的功能。

基于對 Phonon 的認識,有了以下四點:

<!-- [if supportFields]><span lang=EN-US><span style='mso-element:field-begin'></span><span style="mso-spacerun:yes" mce_style="mso-spacerun:yes">&nbsp;</span>= 1 /* GB3 <span style="mso-element:field-separator" mce_style="mso-element:field-separator"></span></span><![endif]--> <!-- [if supportFields]><span lang=EN-US><span style="mso-element:field-end" mce_style="mso-element:field-end"></span></span><![endif]--> 使用 MediaObject 管理媒體源

<!-- [if supportFields]><span lang=EN-US><span style='mso-element:field-begin'></span><span style="mso-spacerun:yes" mce_style="mso-spacerun:yes">&nbsp;</span>= 2 /* GB3 <span style="mso-element:field-separator" mce_style="mso-element:field-separator"></span></span><![endif]--> <!-- [if supportFields]><span lang=EN-US><span style="mso-element:field-end" mce_style="mso-element:field-end"></span></span><![endif]--> 使用 AudioOutput 連接物理設備

<!-- [if supportFields]><span lang=EN-US><span style='mso-element:field-begin'></span><span style="mso-spacerun:yes" mce_style="mso-spacerun:yes">&nbsp;</span>= 3 /* GB3 <span style="mso-element:field-separator" mce_style="mso-element:field-separator"></span></span><![endif]--> <!-- [if supportFields]><span lang=EN-US><span style="mso-element:field-end" mce_style="mso-element:field-end"></span></span><![endif]--> 使用 SeekSlider 實現進度條

<!-- [if supportFields]><span lang=EN-US><span style='mso-element:field-begin'></span><span style="mso-spacerun:yes" mce_style="mso-spacerun:yes">&nbsp;</span>= 4 /* GB3 <span style="mso-element:field-separator" mce_style="mso-element:field-separator"></span></span><![endif]--> <!-- [if supportFields]><span lang=EN-US><span style="mso-element:field-end" mce_style="mso-element:field-end"></span></span><![endif]--> 使用 QList 實現播放列表

于是產生了相應的代碼:

并且需要在構造函數里面將 mediaObject audioOutput 連接起來:


從而使得數據能從 mediaObject 到達 audioOutput ,再通過物理設備播放。

<!-- [if !supportLists]--> 1、 <!-- [endif]--> 要播放音樂首先需要有源文件,所以先實現添加文件的功能。

首先,將添加按鈕和添加功能連接起來:


從而實現點擊按鈕激活相應操作的功能,而添加音樂文件的槽的代碼如下:

上述代碼是使用 QFileDialog getOpenFileNames 方法獲取若干個音樂文件,然后再使用 Qt 中的 foreach 遍歷每個選中的文件,將其添加到播放列表中。

<!-- [if !supportLists]--> 2、 <!-- [endif]--> 播放、暫停和停止的基本實現

同樣的先將信號和槽連接起來:

之后再具體實現相應的簡單功能,這里列出 playFile 的代碼:

首先判斷列表是否為空,接著設置播放隊列,然后播放當前文件,最后使得播放按鈕不可用,而激活暫停按鈕。其它的功能類似,都是使用 mediaObject 的方法。

【步驟三】

這里只簡單地實現播放功能,當然還是可以再繼續擴展功能,不過這是后話了。

運行的效果圖如下:

<!-- [if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:222pt;height:266.25pt'> <v:imagedata src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image003.jpg" mce_src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image003.jpg" o:title="3"/> </v:shape><![endif]--><!-- [if !vml]--> 使用Qt做一個簡易音樂播放器【Phonon淺談--續】

此時就能聽見蠻好聽的《左邊》了^_^

以下是全部代碼:

mainwindow.h:

mainwindow.cpp:

main.cpp:


使用Qt做一個簡易音樂播放器【Phonon淺談--續】


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩在线视频中文字幕 | 欧美一区视频 | 亚洲美色综合天天久久综合精品 | 9966久久精品免费看国产 | 在线亚洲综合 | 免费爱爱视频网站 | 免费不卡中文字幕在线 | 国产人成午夜免视频网站 | 四虎成人影院网址 | 亚洲毛片在线 | 一级毛片成人免费看a | 久久精品国产只有精品2020 | 欧洲成人爽视频在线观看 | 亚洲国产日韩欧美综合久久 | 国产福利资源在线 | 日本我不卡| 96精品视频在线播放免费观看 | 护士日本xxxxx丰满hd4k | 思思91精品国产综合在线 | 综合久久一区二区三区 | 欧美国产亚洲18 | 中文字幕亚洲精品日韩精品 | 欧美videossex精品4k | 色综合欧美综合天天综合 | 亚洲欧美精品成人久久91 | 国产精品久久久久久久免费大片 | 免费人成激情视频在线看 | 亚洲精品国产第一综合99久久 | 日本狠狠干 | 中文字幕在线视频免费 | 奇米视频在线观看 | 国产成人精品视频免费 | 日本欧美视频在线 | 亚洲精品伊人久久久久 | 91久久视频 | 亚洲欧美日韩精品高清 | 欧美体内she精视频毛片 | 精品看片 | 国语性猛交xxxx乱大交 | 国产精品亚洲国产 | 欧洲成人在线观看 |