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

正文內(nèi)容

基于phonon庫的音樂播放器設計(文件)

2025-06-25 01:02 上一頁面

下一頁面
 

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