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

正文內(nèi)容

音樂(lè)播放器設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

2025-07-16 05:35 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 通信程式更為簡(jiǎn)潔明了。信號(hào)和槽能攜帶任意數(shù)量和任意類(lèi)型的參數(shù),他們是類(lèi)型完全安全的,不會(huì)像回調(diào)函數(shù)那樣產(chǎn)生coredumps。所有從QObject或其子類(lèi)(例如Qwidget)派生的類(lèi)都能夠包含信號(hào)和槽。當(dāng)對(duì)象改動(dòng)其狀態(tài)時(shí),信號(hào)就由該對(duì)象發(fā)射(emit)出去,這就是對(duì)象所要做的全部事情,他不知道另一端是誰(shuí)在接收這個(gè)信號(hào)。這就是真正的信息封裝,他確保對(duì)象被當(dāng)作一個(gè)真正的軟件組件來(lái)使用。槽用于接收信號(hào),但他們是普通的對(duì)象成員函數(shù)。一個(gè)槽并不知道是否有所有信號(hào)和自己相連接。而且,對(duì)象并不了解具體的通信機(jī)制。你能將非常多信號(hào)和單個(gè)的槽進(jìn)行連接,也能將單個(gè)的信號(hào)和非常多的槽進(jìn)行連接,甚至于將一個(gè)信號(hào)和另外一個(gè)信號(hào)相連接也是可能的,這時(shí)無(wú)論第一個(gè)信號(hào)什么時(shí)候發(fā)射系統(tǒng)都將即時(shí)發(fā)射第二個(gè)信號(hào)??傊?,信號(hào)和槽構(gòu)造了一個(gè)強(qiáng)大的部件編程機(jī)制。原型界面,如圖37。 圖37 原型界面界面跳轉(zhuǎn)關(guān)系:點(diǎn)擊“添加”目錄彈出對(duì)話框,如圖38。 圖38 對(duì)話框點(diǎn)擊選擇確認(rèn)后歌曲后:把歌曲內(nèi)容顯示在歌曲列表欄。點(diǎn)擊圖像顯示小窗口。(1),需要認(rèn)真查找代碼。(2)運(yùn)行時(shí)易出現(xiàn)qmake錯(cuò)誤或者make,這是qt4常出現(xiàn)的錯(cuò)誤,其他計(jì)算機(jī)也經(jīng)常出現(xiàn)。(3)qmake是一個(gè)協(xié)助簡(jiǎn)化跨平臺(tái)進(jìn)行專(zhuān)案開(kāi)發(fā)的構(gòu)建過(guò)程的工具程式,Qt附帶的工具之一 。qmake能夠自動(dòng)生成Makefile、Microsoft Visual Studio 專(zhuān)案文件 和 xcode 專(zhuān)案文件。不管源代碼是否是用Qt寫(xiě)的,都能使用qmake,因此qmake能用于很多軟件的構(gòu)建過(guò)程。手寫(xiě)Makefile是比較困難而且容易出錯(cuò),尤其在進(jìn)行跨平臺(tái)開(kāi)發(fā)時(shí)必須針對(duì)不同平臺(tái)分別撰寫(xiě)Makefile,會(huì)增加跨平臺(tái)開(kāi)發(fā)復(fù)雜性與困難度。qmake會(huì)根據(jù)專(zhuān)案文件(.pro)里面的信息自動(dòng)生成適合平臺(tái)的 Makefile。開(kāi)發(fā)者能夠自行撰寫(xiě)專(zhuān)案文件或是由qmake本身產(chǎn)生。qmake包含額外的功能來(lái)方便 Qt 開(kāi)發(fā),如自動(dòng)的包含moc 和 uic 的編譯規(guī)則。故障出現(xiàn)后可能采取的變通措施,如果打開(kāi)項(xiàng)目出現(xiàn)如下,圖39。 圖39 對(duì)話框說(shuō)明要切換版本,直接“確定”忽略,進(jìn)入界面可能運(yùn)行不了會(huì)出現(xiàn):此時(shí)運(yùn)行部了,構(gòu)建里邊除了問(wèn)題,直接點(diǎn)擊構(gòu)建會(huì)出現(xiàn),如圖310。 圖310 構(gòu)建會(huì)出現(xiàn)make錯(cuò)誤接下來(lái)檢查一下我做的工程文件夾,看是否用了中文。我的工程路徑為:C:\fknana\8\說(shuō)以不會(huì)出問(wèn)題;此時(shí)可能還有構(gòu)建項(xiàng)目qmake錯(cuò)誤或make,那么單擊“項(xiàng)目”,如圖311。 圖311 Qt版本將Qt版本換成另外一個(gè),就基本解決,若還不行的話,需要按裝Qt5,那個(gè)版本相對(duì)穩(wěn)定。 4 詳細(xì)設(shè)計(jì) 具體模塊設(shè)計(jì) 詳細(xì)設(shè)計(jì)說(shuō)明書(shū)又可稱(chēng)程序設(shè)計(jì)說(shuō)明書(shū)。編制目的是說(shuō)明一個(gè)軟件系統(tǒng)各個(gè)層次中的每一個(gè)程序 (每個(gè)模塊或子程序)的設(shè)計(jì)考慮,如果一個(gè)軟件系統(tǒng)比較簡(jiǎn)單,層次很少,本文件可以不單獨(dú)編寫(xiě),有關(guān) 內(nèi)容合并入概要設(shè)計(jì)說(shuō)明書(shū)。 編寫(xiě)目的本音樂(lè)播放軟件的詳細(xì)設(shè)計(jì)說(shuō)明書(shū)是面向程序員和測(cè)試員的,目的在于程序員根據(jù)軟件概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)編譯程序代碼,同時(shí)也是向程序測(cè)試員分配測(cè)試的依據(jù)。 背景a. 本項(xiàng)目的任務(wù)提出者:太原理工大學(xué);b. 開(kāi)發(fā)者:樊凱;c. 用戶(hù):指導(dǎo)老師。 定義這個(gè)軟件設(shè)計(jì)的目的就是制作一個(gè)能夠播放音頻的播放器。在播放的文件方面,播放的是本地的音頻文件它除具備一些基本的音樂(lè)操作處理功能(暫停、播放、音量調(diào)節(jié)、拖動(dòng)、停止等),如圖41。圖41 播放器的外觀盡管此播放器在穩(wěn)定性、視覺(jué)效果、歌曲庫(kù)的大小等方面遠(yuǎn)遠(yuǎn)不如當(dāng)今的很多播放軟件,但是它具有小巧,長(zhǎng)時(shí)間聽(tīng)歌后占用硬盤(pán)空間小,是一款屬于自己的實(shí)用的播放器。此播放器是在Windows操作系統(tǒng)下的Qt4集成環(huán)境下完成的,Qt是跨平臺(tái)的開(kāi)發(fā)軟件,只要將此播放器的代碼在其他Qt能夠運(yùn)行的平臺(tái)上重新編譯就可以在當(dāng)前平臺(tái)上運(yùn)行。 程序系統(tǒng)的結(jié)構(gòu) 程序描述 現(xiàn)今音樂(lè)播放軟件的發(fā)展迅速,各項(xiàng)功能越來(lái)越完善,附加功能也隨著技術(shù)的發(fā)展而日益增多。但我開(kāi)發(fā)的是一款小型簡(jiǎn)單的播放器,單用系統(tǒng)資源少,使用方便,更主要便于自己的學(xué)習(xí)和能力的提高。 功能 時(shí)序圖描述對(duì)象是如何交互的,并且將重點(diǎn)放在消息序列上。也就是說(shuō),描述消息是如何在對(duì)象間發(fā)送和接收的。時(shí)序圖有兩個(gè)坐標(biāo)軸:縱坐標(biāo)軸顯示時(shí)間,橫坐標(biāo)軸顯示對(duì)象。每一個(gè)對(duì)象的表示方法是:矩形框中寫(xiě)有對(duì)象和 / 或類(lèi)名,且名字下面有下劃線;同時(shí)有一條縱向的虛線表示對(duì)象在序列中的執(zhí)行情況 ( 即發(fā)送和接收的消息對(duì)象的活動(dòng) ) , 這條虛線稱(chēng)為對(duì)象的生命線。對(duì)象間的通信用對(duì)象的生命線之間的水平的消息線來(lái)表示,消息線的箭頭說(shuō)明消息的類(lèi)型,如同步,異步或簡(jiǎn)單 。 瀏覽時(shí)序圖的方法是,從上到下查看對(duì)象間交換的消息,分析那些隨著時(shí)間的流逝而發(fā)生的消息交換。時(shí)序圖中的消息可以是信號(hào)、操作調(diào)用或類(lèi)似于 C++ 中的 RPC ( Remote Procedure Call,遠(yuǎn)程過(guò)程調(diào)用)或 Java 中的 RMI ( Remote Method Invocation , 遠(yuǎn)程方法調(diào)用)。當(dāng)對(duì)象接收到一個(gè)消息時(shí),該對(duì)象中的一項(xiàng)活動(dòng)就會(huì)啟動(dòng),我們把這一過(guò)程稱(chēng)做激活 ( Activation )。 激活會(huì)顯示控制焦點(diǎn),表明對(duì)象在某一個(gè)時(shí)間點(diǎn)開(kāi)始執(zhí)行。一個(gè)被激活的對(duì)象或者是執(zhí)行它自身的代碼,或者是等待另一個(gè)對(duì)象的返回(該被激活的對(duì)象已經(jīng)向另一個(gè)對(duì)象發(fā)送了消息)。在圖形上,激活被繪制為對(duì)象生命線上的一個(gè)瘦高矩形。消息可以用消息名及參數(shù)來(lái)標(biāo)識(shí)。消息還可帶有條件表達(dá)式,表示分支或決定是否發(fā)送消息。如果用于表示分支,則每個(gè)分支是相互排斥的,即在某一時(shí)刻僅可發(fā)送分支中的一個(gè)消息。消息也可以有順序號(hào),但是在時(shí)序圖中,消息的順序號(hào)很少使用,因?yàn)闀r(shí)序圖已經(jīng)將消息的順序顯式地表示出來(lái)了。一個(gè)對(duì)象可以通過(guò)發(fā)送消息來(lái)創(chuàng)建另一個(gè)對(duì)象,當(dāng)一個(gè)對(duì)象被刪除或自我刪除時(shí),該對(duì)象用 X標(biāo)識(shí)。 子模塊名功能需求程序添加文件1. 用戶(hù)左鍵單擊添加選項(xiàng)2. 系統(tǒng)彈出添加窗體3. 用戶(hù)選擇歌曲或小說(shuō)單擊確定略 圖42 時(shí)序圖設(shè)計(jì) 性能 mp3文件大小:0~10mb 該軟件的時(shí)間特性要求:(1)響應(yīng)時(shí)間:~2s;(2)數(shù)據(jù)的轉(zhuǎn)換和傳送時(shí)間:~2s。 模塊的實(shí)現(xiàn)(1)播放進(jìn)度通過(guò)Pnonon::SeekSlider,設(shè)置它的媒體管理源為改音樂(lè)播放器的源就可以了。如:seekSlidersetMediaObject(meidaObject)。(2)音量控制通過(guò)Phonon::VolumeSilder,關(guān)聯(lián)媒體輸出設(shè)備,如:volumeSildersetAudioOutput(audioOutput).(3)播放此功能比較簡(jiǎn)單,當(dāng)點(diǎn)擊播放按鈕時(shí),隱藏播放按鈕,顯示暫停按鈕,并讀取current中的信息,通過(guò)Phonon的函數(shù)play()實(shí)現(xiàn)播放。先把媒體管理源和媒體連接設(shè)備建立連接(path),在通過(guò)信號(hào)槽機(jī)制,當(dāng)用戶(hù)打擊paly按鈕時(shí),則播放音樂(lè)。如:audioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this)。mediaObject = new Phonon::MediaObject(this)。Phonon::createPath(mediaObject, audioOutput)。On_playButton_clicked()。{playActiontrigger()。} //觸發(fā)播放按鈕 connect(playAction, SIGNAL(triggered()), mediaObject, SLOT(play()))?;蛘?playButton, SIGNAL(clicked()), mediaObject, SLOT(play()))。(4)暫停此功能也比較簡(jiǎn)單,當(dāng)點(diǎn)擊暫停按鈕時(shí),隱藏暫停按鈕,顯示播放按鈕,調(diào)用Phonon中的pause()函數(shù),將播放暫停。 (5)上一首和下一首這里主要是獲取QTableWidget里面的選項(xiàng),通過(guò)索引index的值來(lái)確定。改變QTableWidget的行號(hào)。從Phonon::MediaSource的list來(lái)獲取他的源信息。代碼:QListPhonon::MediaSource sources。槽觸發(fā): on_nextButton_clicked()。 Index = (meidaObjectcurrentSource()) + 1。mediaObjectstop。mediaObjectsetCurrentSource((index])。 //跳到改源信息 (6)歌曲的顯示通過(guò)QTableWidget類(lèi)來(lái)獲取歌曲信息,并存入sources中,最后把他顯示在QTableWidget中。通過(guò)Phonon::mediaObejct的metaData來(lái)獲取歌曲的源信息,(因?yàn)楦枨斜緛?lái)就儲(chǔ)存了改信息,每個(gè)文件都存儲(chǔ)了和該文件相關(guān)的信息,多有就可以用媒體管理源直接調(diào)用就行)包括ALBUM,ARTIST,DATE等,創(chuàng)建QTableWidgetItem項(xiàng),最后通過(guò)QTableWidget的setItem把QTableWidgetItem添加進(jìn)去就可以了。代碼:QMapQString, QString metadata = ()。QTableWidgetItem *titleItem = new QTableWidget(title)。QTableWidgetItem *artist = new QTableWidget((“ARTISt”))。如果包括多個(gè)選項(xiàng),則返回最近插入的記錄。Int currentRow = tableWidgetrowCount()。 //返回當(dāng)前所在的行\(zhòng)tableWidgetinsertRow(currentRow)。 //插入一個(gè)空行tabletableWidgetsetItem(currentRow, 0, titleItem)。 //插入一個(gè)記錄tabletableWidgetsetItem(currentRow, 1, titleItem)?!?/后移Phonon::MediaSource source = metaInformationcurrentSource()。Int index = (metaInformationResolvercurrentSource()) + 1。If(() index){ metaInformationResloversetCurrentSource((index))。}TableWidgetresizeColumnToContents() //調(diào)整tableWidget列寬度,使其和內(nèi)容相適宜。 (7)添加歌曲主要用到QFileDialog類(lèi)的靜態(tài)函數(shù)getOpenFileNames() //添加的是多個(gè)文件名,并且要記得把源文件信息存儲(chǔ)在sources中代碼:QStringList files = QFileDialog::getOpenFileNames(this, tr(“打開(kāi)文件”), /*第三個(gè)參數(shù)是路徑*/)。Int index = ()。Foreach(QString str, files){ Phonon::MediaSources source(str)。(souece)。} (8)時(shí)間的顯示用信號(hào)槽來(lái)實(shí)現(xiàn)。首先設(shè)置媒體對(duì)象源設(shè)計(jì)2個(gè)時(shí)鐘周期的時(shí)間間隔。當(dāng)時(shí)間間隔到了的時(shí)候,就觸發(fā)時(shí)間(LCDNumber)發(fā)生改變;connect(mediaobject, SIGNAL(tick(qint64)), this, SLOT(tick(qint64))),此語(yǔ)句將播放對(duì)象的時(shí)間變化對(duì)應(yīng)上了函數(shù)tick(qint64),而當(dāng)前播放的時(shí)間會(huì)傳給tick函數(shù)。時(shí)間顯示的控件是QLCDNumber類(lèi),在函數(shù)中,將播放的當(dāng)前時(shí)間進(jìn)行轉(zhuǎn)化,再通過(guò)控件的display()方法就可以實(shí)現(xiàn)時(shí)間的顯示。代碼:mediaObjectsetTickInterval(1000)。 //每隔一秒鐘觸發(fā)一次connect(medaObject, SIGNAL(tick(qint64)), this, SLOT(tick(qint64)))。void tick(qint64 time){QTime displayTime(0, (time / 6000) % 60, (time / 1000) % 60)。lcdNumberdisplay((“mm:ss)。}(9)播放本地文件點(diǎn)擊打開(kāi)本地文件會(huì)跳出獲取本地文件路徑和名稱(chēng)的對(duì)話框,當(dāng)用戶(hù)選中后,因?yàn)樗潜镜匚募瑫?huì)直接把地址賦給播放的對(duì)象,而不會(huì)經(jīng)過(guò)current結(jié)構(gòu)體,so
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1