1.Qt簡介
Qt是Trolltech公司的標志性產品(現Trolltech公司已被手機巨頭NOKIA公司收購),是一個跨平臺的C++圖形用戶界面(GUI)工具包。它既可以開發GUI程式,也可用于開發非GUI程式,比如控制臺工具和服務器。Qt是面向對象語言,易于擴展,并且允許組件編程。Qt應用程序接口與工具兼容于所有支持平臺,讓開發員們掌握一個應用程序接口便可執行與平臺非相關的應用開發與配置。
Qt支持下述平臺:
1)MS/Windows-95、98、NT 4.0、ME、2000、XP、Vista和Win7;
2)Unix/X11-Linux、Sun Solaris、HPUX、CompaqTru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平臺;3)Macintosh-Mac OS X;
4)Embedded-有幀緩沖(framebuffer)支持的嵌入式Linux平臺,Windows CE.
Qt對不同平臺的專門API進行了專門的封裝(文件處理、網絡等)。
Qt被Nokia收購后推出了一款新的輕量級集成開發環境(IDE)Qt Creator.QtCreator可帶來兩大關鍵益處:提供首個專為支持跨平臺開發而設計的集成開發環境(IDE),并確保首次接觸Qt框架的開發人員能迅速上手和操作。
Qt Creator包含了一套用于創建和測試基于Qt應用程序的高效工具,包括:一個高級的C++代碼編輯器、上下文感知幫助系統、可視化調試器、源代碼管理、項目和構建管理工具。
Qt/Embedded(簡稱QT/E)是一個專門為嵌入式系統設計圖形用戶界面的工具包,是NOKIA公司的圖形化界面開發工具Qt的嵌入式版本,它通過QtAPI與LinuxI/O以及Framebuffer直接交互,擁有較高的運行效率,而且整體采用面向對象編程,擁有良好地體系架構和編程模式。
Qt/embedded和Qt一樣,在4.5版本之后提供了三種不同的授權協議GPL,LGPL和Commercial.開發者使用QT/E開發的應用程序要移植到不同平臺時,只需要重新編譯代碼,而不需要對代碼進行修改。并可以隨意設置程序界面的外觀、方便地為程序連接數據庫、使程序本地化、將程序與Java集成等。
2.使用Qt Creator設計界面
在Qt Creator中完成車載播放器工程的創建后首先是設計界面。界面可用代碼生成,也可用Qt Designer輔助設計。使用Qt Designer設計界面只需將界面中所需的窗口部件拖入ui界面文件中,然后設置屬性修改其顯示效果,最后使用布局控件設置布局效果。通過拖放窗口部件完成的界面在布局上不夠精確,因此本系統采用純代碼來完成界面開發。
本系統的界面主要包括的窗口部件有Table View、Push Button等。在界面的布局上,系統采用了手工布局方式。
手工布局方式通過基類Q W i d g e t提供的setGeometry()函數來設置子窗口部件的位置和大小,當窗口大小改變的時候,重新計算窗口的大小或者變化比例,然后重載QWidget::resizeEvent(QResizeEvent*)函數,能夠使得子窗口部件的大小和位置作出適應性的改變。
如圖1所示為本系統的主界面:
界面設計的主要開發過程如下:
1)使基礎窗口QWidget繼承于主窗口QMainWindow,窗體構造函數負責模板的初始化;
2)創建MyButton類構造窗體按鈕部件,并對窗口部件中使用的對象以及函數進行聲明,包括圖標、名稱、字體、文本、坐標、畫筆、按鈕是否有效、重繪時間、鼠標按下事件等;
3)添加按鈕的信號與槽。系統界面中每個功能按鈕都對應一個信號和槽,信號和槽式Qt編程的核心技術,通過信號可以將界面上的空間所發生的事件進行發射,槽函數負責接受相應信號并作出響應處理。如播放暫停按鈕,與其對應的信號是單擊,它的單擊信號連接一個槽處理函數,在這個函數中通過QProcess來向slave模式下的MPlayer發送命令,達到控制播放的目的。其他的控件在處理方式上都與播放暫停按鈕類似,都有自己得信號和槽。
3.軟件功能模塊設計
機車車輛車載播放器主要由音頻播放和視頻播放兩大部分組成,這兩部分存在著很多相同和相似的功能,為避免重復編碼,采用C++面向對象的模塊化設計思想,將兩部分中功能相似的部分抽取出來,形成獨立的功能模塊,提高了軟件的可重用性和系統的運行效率。各功能模塊均采用C++類來實現,對模塊內部的數據進行封轉,對外提供接口供外部調用,一方面提高了系統的數據安全性,另一方面也使軟件編碼更加的規范。
為實現機車車輛車載播放系統的功能,創建了窗體文件用于設置車載播放器的窗體;創建了配置文件用于處理系統配置信息;創建了用于實現對數據庫操作的源文件;創建了觸摸屏控制文件以及歌曲列表文件。
具體功能模塊設計方式如下:
1)搜索歌曲
點擊搜索歌曲按鈕時,跳出一個對話框,當用戶輸入了歌曲名或名稱中的部分內容并確定后,發送消息到服務器端,服務器端對表song進行模糊查詢,得到符合的歌曲列表,將這些信息返回給客戶端,在客戶端形成一個QwidgetTable控件,用來顯示搜索的結果。當用戶點擊其中的一行時,將相應行的歌曲信息賦值給current并播放。
2)上一首
上一首按鈕連接了prev()函數,它的功能是通過prev()函數來實現的。在此函數中,實現讀取usersong.xml文件中位置為songpos-1的歌曲信息,賦值給current,然后進行播放,實現上一首功能。
3)播放
當點擊播放按鈕時,隱藏播放按鈕,顯示暫停按鈕,并讀取c u r r e n t中的信息,通過Phonon的函數play()實現播放。
4)暫停
當點擊暫停按鈕時,隱藏暫停按鈕,顯示播放按鈕,調用Phonon中的pause()函數,將播放暫停。
5)下一首
當點擊下一首按鈕時,調用nextFile()函數,并且當歌曲播放完之后會產生一個aboutToFinish()信號,這個時候也會調用nextFile()函數。在此函數中調用readinformation()函數,得到下一首的信息,并播放。
6)打開本地文件
Qt和QT/Embedded提供了一套標準的通用對話框為方便程序員進行某些特定功能對話框的編程,其中包括了文件對話框QFileDialog.通過彈出QFileDialog對話框,我們既可以選擇一個或者多個文件以及目錄,也可以輸入文件名或者路徑。它可以限制用戶只能選擇已經存在的文件,也可以允許用戶輸入一個新的文件名;此外,使用過濾器,則只能選擇符合特殊標準的文件名。點擊打開按鈕會彈出獲取本地文件路徑和名稱的對話框,當用戶選中后,因為它是本地文件,會直接把地址賦給播放的對象,當播放完后繼續播放usersong.xml中的下一首。
7)靜音
音量的控制是通過Phonon::VolumSlid e r控件實現的,通過執行語句:u i ->volumeSlider->setAudioOutput(audiooutput)將音量的控件連接到了音頻輸出的設備上,通過語句Phonon::createPath(mediaobject,audiooutput)音頻輸出的設備和播放的對象mediaobject連接,因此實現靜音功能。
8)顯示歌曲名稱
void Player::setLabel(QString
track)
{
QString filename = mediaObject-
>currentSource()。fileName();
filename = filename.right
( f i l e n a m e . l e n g t h ( ) - f i l e n a m e .
lastIndexOf(‘/’)-1);
this->setWindowTitle(“Player
~”+filename);
}
9)關閉窗口
雙擊窗體空白處可關閉播放器。需重定義鼠標雙擊事件調用close()函數加以實現。
10)數據庫操作
程序中使用SQLite數據庫對歌曲及用戶信息進行管理。
SQLite是D.Richard Hipp用C語言編寫的開源嵌入式數據庫引擎。它是完全獨立的,不具有外部依賴性,非常健壯。SQLite第一個Alpha版本誕生于2000年5月,至今已經有11個年頭,最新版本SQLite3也已經發布。SQLite是完全免費開源的軟件。
SQLite能夠運行在Windows/Linux/Unix等各種操作系統。SQLite源代碼大約3萬行,250KB大小,占用資源非常少。相比Mysql、PostgreSQL這兩款著名的開源數據庫,SQLite占用資源更少,處理速度更快,非常適合用于嵌入式系統開發中。
在系統中采用SQLite數據庫對歌曲信息結構進行組織、存儲以及管理。通過使用SQLite建立歌曲信息數據庫表,然后就可以在程序通過相關接口函數對歌曲信息進行操作,如插入、刪除、更新、查詢等。采用SQLite數據庫進行歌曲信息的管理大大降低了編程的復雜性。
在具體的系統數據庫模塊中,采用了Qt連接SQLite數據庫的方式來操作數據庫。Qt框架中QtSql模塊提供了一個平臺無關且數據庫無關的訪問S Q L數據庫的接口。Qt中的每個數據庫連接用一個QSqlDatabase對象來表示,同時Qt也使用不同driver來和各種不同數據庫的API進行通訊。對于SQLite數據庫Qt提供了很好的支持和封裝,通過Qt的相關類可以很容易的進行數據庫操作。
要實現對S Q L i t e 數據庫進行操作首先需要創建一個關于數據庫的創建和鏈接的頭文件,然后在頭文件中通過創建QSqlDatabase數據庫連接對象來調用addDatabase()并設置相關函數的屬性,然后在工程文件的最后添加關于使用數據庫的聲明“QT+=sql”.
4.MPlayer播放器的控制
MPlayer是一款開源多媒體播放器,以GNU通用公共許可證發布。此款軟件可在各主流作業系統使用,例如Linux和其他類Unix系統、微軟的視窗系統及蘋果電腦的Mac OS X系統。MPlayer能夠播放大多數MPEG、VOB、AVI、OGG、VIVO、ASF/WMV、Qt/MOV、FLV、RM等媒體文件。相對其它播放器來說,MPlayer還具有資源占用非常少,不需要任何系統解碼器就可以播放各種媒體格式,在低配置的機器上使用等突出優勢。所以對于運算速度相對較弱的嵌入式系統來說,MPlayer是一個很好的選擇。
在本文的系統設計中,選用了MPlayer作為系統的媒體播放器來進行媒體文件的播放以及控制。在系統的播放模塊中采用Qt的QProcess(進程類)通過start方法調用slave模式下的MPlayer產生一個進程,然后通過QProcess類的write方法向MPlayer發送控制命令,實現控制播放的目的。
5.小結
本論文詳細介紹了如何使用Qt Creator完成車載音樂播放系統的界面設計及程序代碼的編輯與運行。此車載播放系統可實現的功能如下:
1)具有美觀、易于理解和操作的主界面;
2)可按照多種方式對數據庫中的歌曲進行查找;
3)可實現歌曲的播放、暫停,以及上一首和下一首歌曲的切換;
4)所選歌曲可生成播放列表,列表可以循環播放,列表信息可修改,在列表中雙擊歌曲名稱可播放該歌曲;
5 ) 可對設備中存儲的歌曲進行刪除;
6)可播放外接存儲器中的歌曲。
同時,系統可以方便地移植到各種嵌入式設備中。
-
播放器
+關注
關注
5文章
399瀏覽量
37431 -
多媒體
+關注
關注
0文章
500瀏覽量
36999 -
C++
+關注
關注
22文章
2110瀏覽量
73685
發布評論請先 登錄
相關推薦
評論