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

正文內(nèi)容

基于linux的音樂(lè)播放器設(shè)計(jì)與實(shí)現(xiàn)論文(參考版)

2025-06-21 14:19本頁(yè)面
  

【正文】 最后,要感謝我的父母。同時(shí)感謝成都大學(xué),四年來(lái)的辛勤培養(yǎng),沒(méi)有學(xué)校,就沒(méi)有我們的今天。其次要感謝其他的每一位科任老師的指導(dǎo)和建議,在我們的本次設(shè)計(jì)中,你們勤奮工作,為我們克服了許多我們?cè)?jīng)碰到的困難來(lái)幫助我們完成此次畢業(yè)設(shè)計(jì),給了我很大的幫助。每次學(xué)院有什么信息她總是不辭辛苦的通知我們,讓我們能夠及時(shí)了解學(xué)院的信息。經(jīng)過(guò)半年的準(zhǔn)備與實(shí)踐,本次畢業(yè)設(shè)計(jì)已經(jīng)接近尾聲,作為一個(gè)本科生的畢業(yè)設(shè)計(jì),由于經(jīng)驗(yàn)的匱乏,難免有許多考慮不周全的地方,如果沒(méi)有導(dǎo)師的督促指導(dǎo),以及一起工作的同學(xué)們的支持,想要完成這個(gè)設(shè)計(jì)是難以想象的。經(jīng)過(guò)對(duì)播放器的測(cè)試表明,本播放器能夠流暢地運(yùn)行,并能很好地實(shí)現(xiàn)各項(xiàng)功能,達(dá)到了設(shè)計(jì)預(yù)期的效果。實(shí)現(xiàn)了音樂(lè)播放器的基本功能,包括“播放”、“暫停”、“上一曲”、“下一曲”、“顯示播放日志”等功能,能夠滿足用戶的基本需求。結(jié) 論本文是在Linux操作系統(tǒng)下,使用Qt和Phonon應(yīng)用程序框架,使用C++語(yǔ)言編碼實(shí)現(xiàn)。在播放過(guò)程中,如果播放的文件出現(xiàn)各種問(wèn)題(如:文件已刪除),都能夠進(jìn)行良好的判斷,系統(tǒng)設(shè)置的快捷鍵能夠很好的對(duì)播放器進(jìn)行操作。 測(cè)試結(jié)果 由以上測(cè)試結(jié)果可以看出,系統(tǒng)能夠順利的完成歌曲列表的添加,刪除操作。如圖所示,將文件添加進(jìn)播放列表,然后在磁盤(pán)上刪除“紅日”文件,當(dāng)播放“紅日”文件時(shí),由于無(wú)法找到歌曲文件,播放器彈出提示信息“Could not locate media source”。如圖47所示:圖47 點(diǎn)擊下一首當(dāng)用戶添加文件到播放列表中后,如果由于某種原因(如文件刪除、文件重命名)無(wú)法找到文件時(shí),播放器將彈出提示信息。如圖所示,用戶點(diǎn)擊“”按鈕,播放器將播放“Shero”這首歌曲。在當(dāng)前播放歌曲完成是,會(huì)自動(dòng)跳轉(zhuǎn)到播放列表的下一首歌曲播放。 播放歌曲當(dāng)用戶點(diǎn)擊播放按鈕時(shí),如果存在播放文件,將播放選擇的文件,如果不存在文件,則會(huì)給出提示信息。如圖所示,播放列表內(nèi)的歌曲已經(jīng)全部刪除。如果用戶在彈出的右擊菜單中選擇刪除所有功能,將會(huì)刪除播放列表中的所有歌曲,播放器自動(dòng)刷新刪除后的播放列表。如圖所示,用戶選中歌曲“斯琴高麗的傷心”,然后右擊,在菜單中選擇“刪除此首歌曲”,將其從播放列表中刪除,同時(shí)播放器能夠自動(dòng)刷新播放列表。 刪除歌曲當(dāng)用戶在在播放列表中右擊,在彈出的菜單中選擇刪除功能時(shí),將會(huì)刪除被選中的歌曲名。如果是首次添加歌曲,播放器默認(rèn)選中播放列表的第一首歌曲,當(dāng)用戶點(diǎn)擊“”按鈕時(shí),將播放選中的歌曲。圖42 打開(kāi)文件后圖42是用戶成功添加文件后的播放器截圖。如圖41所示: 圖41 播放器主界面與打開(kāi)文件對(duì)話框圖41是播放器主界面和打開(kāi)文件對(duì)話框截圖。 添加文件本播放器實(shí)現(xiàn)了文件的添加,能夠?qū)⑽募砑拥讲シ帕斜碇小?duì)播放器功能不對(duì)、性能錯(cuò)誤、初始化和終止錯(cuò)誤這幾類錯(cuò)誤進(jìn)行重點(diǎn)測(cè)試。黑盒測(cè)試和白盒測(cè)試都有各自的優(yōu)缺點(diǎn),構(gòu)成互補(bǔ)關(guān)系[17]。當(dāng)程序開(kāi)發(fā)完成以后,都需要進(jìn)行軟件測(cè)試,這樣才能發(fā)現(xiàn)開(kāi)發(fā)過(guò)程中存在的各種錯(cuò)誤和缺陷。測(cè)試者輸入資料驗(yàn)證資料流在程式中的流動(dòng)路徑,并確定適當(dāng)?shù)妮敵?,類似測(cè)試電路中的節(jié)點(diǎn)。白箱測(cè)試:主要用于測(cè)試應(yīng)用程式的內(nèi)部結(jié)構(gòu)或運(yùn)作,而不是測(cè)試應(yīng)用程式的功能。測(cè)試者選擇有效輸入和無(wú)效輸入來(lái)驗(yàn)證是否正確的輸出。測(cè)試者不需具備應(yīng)用程式的程式碼、內(nèi)部結(jié)構(gòu)和編程語(yǔ)言的專門(mén)知識(shí)。 測(cè)試的方法軟件測(cè)試一般分為白箱測(cè)試和黑箱測(cè)試[17]。(3) 成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。 軟件測(cè)試的目的對(duì)于軟件測(cè)試的目的,提出過(guò)以下觀點(diǎn):(1) 測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程。當(dāng)然,測(cè)試計(jì)劃應(yīng)該在需求分析階段就已經(jīng)開(kāi)始制定了。軟件測(cè)試(Software Testing)是發(fā)現(xiàn)軟件中錯(cuò)誤和缺陷的主要手段,是保證軟件質(zhì)量的法寶之一。其中“Options”選項(xiàng)提供播放器的設(shè)置功能;“Minimize”、“Restoration”選項(xiàng)用于實(shí)現(xiàn)播放器的最小化和恢復(fù)功能;“Show History”選項(xiàng)用來(lái)實(shí)現(xiàn)顯示播放歷史的功能;“Quit”選項(xiàng)實(shí)現(xiàn)退出程序功能。 parenttrayIconMenuaddAction(minimizeAction)。 QAction *minimizeAction = new QAction(QObject::tr(Minimize), parent)。 parenttrayIconsetToolTip(music play)。 parenttrayIcon = new QSystemTrayIcon(parent)。 設(shè)置系統(tǒng)托盤(pán)圖標(biāo)為程序添加體統(tǒng)托盤(pán)圖標(biāo)和上下文菜單:QIcon icon=QIcon(./image/)。運(yùn)行效果如圖310所示:圖310 播放器運(yùn)行效果圖圖310是播放器的運(yùn)行效果圖。 設(shè)置背景根據(jù)配置文件獲取設(shè)置圖標(biāo)路徑,并且初始化圖標(biāo)Qstring skinPath=musicSettingsvalue(“skinPath”).toString()。為了讓漢字不出現(xiàn)亂碼情況,必須設(shè)置QSettings的編碼方式:musicSettingssetIniCodec(QTextCodec::codecForName(UTF8))。 QSettings的亂碼問(wèn)題由于漢字的存儲(chǔ)不同于英文字符,所以不能使用ASCII字符集進(jìn)行編碼,在使用QSettings的過(guò)程中,會(huì)出現(xiàn)亂碼的情況。thisuifilepathLEditsetText(defaultOpenDir)。Qstring oldOpenDir=musicSettingsvalue(defaultOpenDir).toString()。如果Minimize被選中, minimizeToTray=true,musicSettingssetValue(minimizeToTray,true)。 QSettings的使用在本文中使用QSettings類來(lái)實(shí)現(xiàn)播放器設(shè)置[15],配置文件內(nèi)容如圖37所示:圖37 文件(1) minimizeToTray是否允許播放器最小化到托盤(pán);(2) defaultOpenDir默認(rèn)添加文件打開(kāi)目錄;(3) skinPath界面背景圖像路徑。其中QSettings::Format有兩種:(1) QSettings::NativeFormat在windows平臺(tái)可以讀寫(xiě)windows注冊(cè)表;(2) QSettings::IniFormat可以讀寫(xiě)ini格式的配置文件。 fileName,Format format, QObject *Qsettings的API是基于Qvariant,Qvariant是一種數(shù)據(jù)類型的集合,它包含了大部分通常的Qt數(shù)據(jù)類型,比如QString,QRec,QImage,等等。此時(shí)系統(tǒng)將修改配置文件。當(dāng)用戶選擇Options選項(xiàng)時(shí),會(huì)彈出播放器設(shè)置界面,對(duì)播放器進(jìn)行一些設(shè)置。 }}這樣當(dāng)用戶在雙擊系統(tǒng)托盤(pán)圖標(biāo)后,就會(huì)實(shí)現(xiàn)最小化和還原。 } else thishide()。void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason){ switch (reason) { case QSystemTrayIcon::DoubleClick: if(thisisHidden()) { thisshowNormal()。將系統(tǒng)托盤(pán)trayIcon的activated()信號(hào)與槽iconActivated(QSystemTrayIcon ::ActivationReason)相關(guān)聯(lián)。void MainWindow::doubleClicked(int row, int ){mediaObjectsetCurrentSource(sourceList[row])。將播放列表雙擊信號(hào)與自定義槽doubleClicked(int row, int )關(guān)聯(lián)。mediaObjectsetQueue(sourceList)。int index=()。(7) 打開(kāi)文件在播放器啟動(dòng)后,播放器的播放列表默認(rèn)是空的,需要用戶手動(dòng)添加播放列表,此時(shí)用戶可以通過(guò)打開(kāi)按鈕,彈出打開(kāi)系統(tǒng)默認(rèn)的打開(kāi)文件對(duì)話框選擇歌曲文件。mediaObjectplay()。mediaObjectstop()。(5) 上一首如果用戶點(diǎn)擊上一首按鈕,系統(tǒng)會(huì)判斷當(dāng)前播放項(xiàng)是否是列表第一項(xiàng),如果是,同時(shí)允許循環(huán)播放,會(huì)跳轉(zhuǎn)到最后一首,如果不是會(huì)提示用戶。mediaObjectsetCurrentSource((index))。indexOf(mediaObjectcurrentSource()) + 1。(4) 下一首如果用戶點(diǎn)擊下一首按鈕,系統(tǒng)會(huì)判斷當(dāng)前播放項(xiàng)是否是列表最后一項(xiàng),如果是,同時(shí)允許循環(huán)播放,會(huì)跳轉(zhuǎn)到第一首,如果不是則會(huì)提示用戶。(3) 停止當(dāng)播放器處于播放、停止?fàn)顟B(tài)時(shí),點(diǎn)擊停止按鍵時(shí),將停止對(duì)當(dāng)前歌曲的播放。}(2) 暫停當(dāng)播放器處于播放狀態(tài)是,想暫停播放歌曲,可以點(diǎn)擊暫停按鍵時(shí),這時(shí)將暫停播放,再次點(diǎn)擊此按鍵,將繼續(xù)從當(dāng)前歌曲暫停處播放。 thisuitotalTimeLablesetText(tr(%1 ) .arg((mm:ss)))。 QTime totalTime(0,(temp / 60000) % 60,(temp / 1000) % 60)。代碼實(shí)現(xiàn):connect(mediaObject,SIGNAL(tick(qint64)),this,SLOT(showTime(qint64))。顯示歌曲長(zhǎng)度,mediaObject在播放過(guò)程中發(fā)出tick(qint64)信號(hào) ,將mediaObject的tick(qint64)信號(hào)和自定義槽showTime(qint64)關(guān)聯(lián)。(1) 播放當(dāng)點(diǎn)擊播放按鍵時(shí),播放器播放用戶選中的歌曲,同時(shí)顯示播放歌曲的長(zhǎng)度和當(dāng)前播放進(jìn)度信息[13]。volumeSlidershow()。volumeSlidersetAudioOutput(audioOutput)。將媒體對(duì)象(mediaObject)和音頻輸出設(shè)備(audioOutput)使用函數(shù)Phon on::createPath()連接起來(lái):Phonon::createPath(mediaObject, audioOutput)。seekSlider = new Phonon::SeekSlider(uiprogresswidget)。 建立媒體對(duì)象 首先實(shí)例化使用的Phonon類:mediaObject =new Phonon::MediaObject(this)。很適合使用Qlist來(lái)存儲(chǔ)播放器的播放列表,用法:QListPhonon::MediaSource sourceList。元素個(gè)數(shù)小于1000的QList能夠很快地實(shí)現(xiàn)在鏈表中間插入操作,以及快速的查找操作。它以鏈表方式存儲(chǔ)一組值,并能對(duì)這組數(shù)據(jù)進(jìn)行快速索引,還提供了快速插入和刪除等操作。 Qlist容器類QList不是Phonon的類成員,而是Qt的一個(gè)類庫(kù),它是一種表示鏈表的模板類。用法其實(shí)與上面的SeekSlider類似,使用范例如下:Phonon::VolumeSlider *volumeSlider = new Phonon::VolumeSlider。seekSlider show()。用法:Phonon::SeekSlider *seekSlider = new Phonon::SeekSlider(this)。(4
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1