freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于phonon庫(kù)的音樂播放器設(shè)計(jì)(文件)

 

【正文】 司并沒有開放其源代碼,對(duì)于一個(gè)程序員來說,這可能是覺得非常遺憾的;因?yàn)槲覀儫o法知道其具體過程的實(shí)現(xiàn)。1 QT及Phonon庫(kù)介紹 QT簡(jiǎn)介QT是一個(gè)跨平臺(tái)的C++開發(fā)工具,有時(shí)又被稱為C++部件工具箱??梢詫?shí)現(xiàn)本平臺(tái)的圖形界面風(fēng)格,也可實(shí)現(xiàn)其它平臺(tái)的圖形界面風(fēng)格。 Deploy Anywhere”。 2009 年5月11日,諾基亞QT Software 宣布 QT源代碼管理系統(tǒng)面向公眾開放,QT 開發(fā)人員可通過為 QT 以及與 QT 相關(guān)的項(xiàng)目貢獻(xiàn)代碼、翻譯、示例以及其他內(nèi)容,協(xié)助引導(dǎo)和塑造 QT未來的發(fā)展。其包括了以下模塊:基本模塊,包括核心,窗口組件等集成開發(fā)環(huán)境工作區(qū)模塊openGL三維圖形模塊網(wǎng)絡(luò)模塊表格模塊XML模塊數(shù)據(jù)庫(kù)模塊[7] Phonon庫(kù)簡(jiǎn)介Phonon庫(kù)原本是KDE4的開放原碼多媒體API,不過后來,KDE與QT合并開發(fā)了。整體來說,Phonon的架構(gòu)只要記住三個(gè)東西:media object Phonon的基礎(chǔ),用于管理多媒體來源。通常sink是一個(gè)播放的裝置(例如聲卡等)。2 播放器的基本設(shè)計(jì)需求 基本設(shè)計(jì)需求根據(jù)我們的軟件需求分析,可獲得軟件系統(tǒng)的基本功能需求,以下從不同的角度來描述系統(tǒng)的需求,并且使用圖例來描述,系統(tǒng)的功能需求,我們分成幾個(gè)部分來概括,即播放器的基本控制需求,播放器列表管理需求如圖1所示。同時(shí),在播放列表上還有歌詞顯示按鈕,如果歌詞存在于相關(guān)的路徑下,點(diǎn)擊歌詞按鈕則顯示或隱藏歌詞。因此,對(duì)于一個(gè)成功的軟件設(shè)計(jì),功能模塊的設(shè)計(jì)是關(guān)鍵。而我使用的編程語(yǔ)言是C++,這本來是面向?qū)ο蟮恼Z(yǔ)言,面向?qū)ο缶幊虖拿嫦驅(qū)ο笤O(shè)計(jì)開始,而面向?qū)ο笤O(shè)計(jì)從抽象開始。自頂向下將軟件系統(tǒng)劃分為若干子模塊。音樂播放器音量控制上一曲下一曲歌詞播放、暫停播放列表添加文件主界面圖3音樂播放器系統(tǒng)模塊圖、GUI界面設(shè)計(jì)播放器的GUI界面設(shè)計(jì)主要是兩個(gè)方面的設(shè)計(jì):主界面布局設(shè)計(jì)和按鈕的代碼設(shè)計(jì)。在本次設(shè)計(jì)的過程中,各個(gè)GUI部件的功能圖如圖4所示。圖5播放器GUI界面效果圖按鈕的代碼設(shè)計(jì)是指按鈕功能的代碼實(shí)現(xiàn),在本次設(shè)計(jì)的“音樂播放器”中,由于按鈕功能是軟件的控制臺(tái),播放、暫停、上一曲、下一曲、停止、歌詞顯示、播放列表顯示、音量調(diào)節(jié)、添加播放文件都需通過按鈕,所以,按鈕功能也是一個(gè)非常需要注意的地方。也減少了軟件開發(fā)過程中出錯(cuò)的機(jī)率。 setWindowIcon(QIcon(:/image/))。 Phonon::AudioOutput *audio_output = new Phonon::AudioOutput(Phonon::MusicCategory, this)。 top_labelsetTextFormat(QT::RichText)。 //設(shè)置顯示時(shí)間的標(biāo)簽 QToolBar *widget_bar = new QToolBar(this)。 //QSizePolicy類是描述水平和垂直修改大小策略的一種屬性 time_labelsetSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)。 connect(PLAction, SIGNAL(triggered()), this, SLOT(SetPlayListShown()))。 connect(LRCAction, SIGNAL(triggered()), this, SLOT(SetLrcShown()))。 widget_baraddSeparator()。 labelsetMaximumSize(30,30)。 //將以上部件添加到工具欄 tool_baraddWidget(label)。 tool_baraddAction(skip_forward_action)。 //自己加的,加一條豎線 tool_baraddAction(ReturnAction)。 main_layoutaddWidget(top_label)。 setLayout(main_layout)。//設(shè)置添加音樂文件動(dòng)作 QAction *open_action = new QAction(this)。 open_actionsetEnabled(true)。 if(()) return。 } if(!()) { //如果媒體源列表不為空,則將新加入的第一個(gè)媒體源作為當(dāng)前媒體源 meta_information_resolversetCurrentSource((index))。圖7 播放器添加歌曲效果圖 播放歌曲是“音樂播放器”的靈魂所在,將添加的歌曲通過播放器播放出來。 play_actionsetIcon(QIcon(:/image/))。 單擊播放按鈕(快捷鍵為F5),利用QT中的信號(hào)與槽機(jī)制,發(fā)送信號(hào)triggered(),進(jìn)入到以下的槽函數(shù)setpaused()中,執(zhí)行具體的播放動(dòng)作。圖8 播放器暫停播放效果圖否則,則播放器進(jìn)入到播放狀態(tài),其效果圖如圖9所示。 skip_backward_actionsetText(tr(上一首(Ctrl+Left)))。 int index = (media_objectcurrentSource())。播放下一曲也差不多,其代碼為://設(shè)置下一首動(dòng)作 skip_forward_action = new QAction(this)。 connect(skip_forward_action, SIGNAL(triggered()), this, SLOT(SkipForward()))。 media_objectplay()。 volume_slidersetSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum)。在本次程序設(shè)計(jì)的過程中,我體會(huì)到了只有真正的實(shí)踐才能牢牢掌握知識(shí),同時(shí),我認(rèn)識(shí)到,光靠學(xué)校教材上的知識(shí)在現(xiàn)實(shí)生活中是遠(yuǎn)遠(yuǎn)不夠的,只有更多的學(xué)習(xí)新知識(shí),緊跟知識(shí)發(fā)展潮流的腳步,切實(shí)做到理論與實(shí)踐相結(jié)合,才能達(dá)到真正意義上的學(xué)以致用。 Ketan Bacchuwar。 InitPlayer()。 (0,0,thiswidth(),thisheight(),QPixmap(:/image/))。 setMaximumSize(400, 200)。//綁定源和接收器 //關(guān)聯(lián)媒體對(duì)象的tick信號(hào)來更新播放時(shí)間的顯示 connect(media_object, SIGNAL(tick(qint64)), this, SLOT(UpdateTime(qint64)))。//運(yùn)行點(diǎn)擊進(jìn)入外部鏈接 top_labelsetAlignment(Qt::AlignCenter)。 time_labelsetToolTip(tr(當(dāng)前時(shí)間/總時(shí)間))。 PLActionsetShortcut(QKeySequence(F4))。 LRCActionsetShortcut(QKeySequence(F2))。 widget_baraddSeparator()。 widget_baraddSeparator()。 play_actionsetIcon(QIcon(:/image/))。 //設(shè)置停止動(dòng)作 stop_action = new QAction(this)。 connect(stop_ac。 stop_actionsetText(tr(停止(F6)))。 play_actionsetShortcut(QKeySequence(F5))。//該構(gòu)造函數(shù)沒有寫入文字 tool_barsetFloatable(true)。 widget_baraddSeparator()。 connect(LRCAction, SIGNAL(triggered()), this, SLOT(SetLrcShown()))。 connect(PLAction, SIGNAL(triggered()), this, SLOT(SetPlayListShown()))。 //QSizePolicy類是描述水平和垂直修改大小策略的一種屬性 time_labelsetSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)。 //設(shè)置顯示時(shí)間的標(biāo)簽 QToolBar *widget_bar = new QToolBar(this)。 top_labelsetTextFormat(Qt::RichText)。 Phonon::AudioOutput *audio_output = new Phonon::AudioOutput(Phonon::MusicCategory, this)。 setWindowIcon(QIcon(:/image/))。}MyWidget::~MyWidget(){ delete ui。 Srikrishna Karanam。這使我認(rèn)識(shí)到,在以后的生活中、工作中,遇到問題時(shí),一定要把握好整體框架,將問題從上到下分解,一步一步腳印,這樣才能少走彎路,更好的解決問題。結(jié) 論在各位老師的悉心指導(dǎo)、同學(xué)們的無私幫助和自己的辛苦努力下,我大體上完成了“音樂播放器”軟件的開發(fā),不過由于時(shí)間倉(cāng)促,加之經(jīng)驗(yàn)還不是很足,可能仍存在著許多的不足,一些功能還沒有實(shí)現(xiàn),比如這個(gè)播放器不能實(shí)現(xiàn)在線播放,如果當(dāng)前播放的歌曲的歌詞不存在,不能在網(wǎng)上搜索歌詞以及下載歌詞到本地等,總之,整個(gè)播放器還有許多功能需要進(jìn)一步完善和改進(jìn)。因此,控制適當(dāng)?shù)囊袅枯敵?,是我們?cè)谛蕾p美妙的音樂的前必須經(jīng)歷的步驟。 int index = (media_objectcurrentSource())。 skip_forward_actionsetText(tr(下一首(Ctrl+Right)))。 media_objectplay()。 connect(skip_backward_action, SIGNAL(triggered()), this, SLOT(SkipBackward()))。//設(shè)置上一首動(dòng)作 skip_backward_action = new QAction(this)。 } else media_objectplay()。 play_actionsetShortcut(QKeySequence(F5))。//該構(gòu)造函數(shù)沒有寫入文字 tool_barsetFloatable(true)。將添加的音頻文件存放到播放列表中,如果點(diǎn)擊播放按鈕,則默認(rèn)播放播放列表的第一首歌曲。 foreach(QString string, list) { Phonon::MediaSource source(string)。如果我們點(diǎn)擊播放器上的添加文件按鈕,其則發(fā)送一個(gè)信號(hào)triggered(),在C++中,消息就是成員函數(shù)的調(diào)用[11]。 open_actionsetText(tr(播放文件(Ctrl+O)))。主界面的實(shí)際效果如圖6所示。 main_layoutaddWidget(widget_bar)。 tool_barsetAllowedAreas(QT::TopToolBarArea | QT::BottomToolBarArea)。 tool_baraddAction(open_action)。 tool_baraddAction(stop_action)。 labelsetScaledContents(true)。 widget_baraddSeparator()。 widget_baraddSeparator()。 LRCActionsetShortcut(QKeySequence(F2))。 PLActionsetShortcut(QKeySequence(F4))。 time_labelsetToolTip(tr(當(dāng)前時(shí)間/總時(shí)間))。//運(yùn)行點(diǎn)擊進(jìn)入外部鏈接 top_labelsetAlignment(QT::AlignCenter)。//綁定源和接收器 //關(guān)聯(lián)媒體對(duì)象的tick信號(hào)來更新播放時(shí)間的顯示 connect(media_object, SIGNAL(tick(qint64)), this, SLOT(UpdateTime(qint64)))。 setMaximumSize(400, 200)。而phonon的架構(gòu)主要是以下三個(gè)部分:1)media object其主要用來管理多媒體來源,提供基本的播放控制 2)sinks多媒體輸出,接受media object來的數(shù)據(jù),并接受其控制播放,而由sink來處理這些多媒體 3)paths用來連接media object與sink。由于軟件的開發(fā)使用的語(yǔ)言是C++,C++是具有良好的面向?qū)ο缶幊坦δ艿恼Z(yǔ)言,其強(qiáng)大的類的機(jī)制,結(jié)合QT中的信號(hào)與槽機(jī)制,實(shí)現(xiàn)通信。雖說不是顯得很大氣
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1