0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用Qt Creator人機交互界面的車載播放系統(tǒng)的設(shè)計與實現(xiàn)

電子設(shè)計 ? 來源:郭婷 ? 作者:電子設(shè)計 ? 2018-12-04 08:44 ? 次閱讀

1.Qt簡介

Qt是Trolltech公司的標(biāo)志性產(chǎn)品(現(xiàn)Trolltech公司已被手機巨頭NOKIA公司收購),是一個跨平臺的C++圖形用戶界面(GUI)工具包。它既可以開發(fā)GUI程式,也可用于開發(fā)非GUI程式,比如控制臺工具和服務(wù)器。Qt是面向?qū)ο笳Z言,易于擴展,并且允許組件編程。Qt應(yīng)用程序接口與工具兼容于所有支持平臺,讓開發(fā)員們掌握一個應(yīng)用程序接口便可執(zhí)行與平臺非相關(guān)的應(yīng)用開發(fā)與配置。

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進行了專門的封裝(文件處理、網(wǎng)絡(luò)等)。

Qt被Nokia收購后推出了一款新的輕量級集成開發(fā)環(huán)境(IDE)Qt Creator.QtCreator可帶來兩大關(guān)鍵益處:提供首個專為支持跨平臺開發(fā)而設(shè)計的集成開發(fā)環(huán)境(IDE),并確保首次接觸Qt框架的開發(fā)人員能迅速上手和操作。

Qt Creator包含了一套用于創(chuàng)建和測試基于Qt應(yīng)用程序的高效工具,包括:一個高級的C++代碼編輯器、上下文感知幫助系統(tǒng)、可視化調(diào)試器、源代碼管理、項目和構(gòu)建管理工具。

Qt/Embedded(簡稱QT/E)是一個專門為嵌入式系統(tǒng)設(shè)計圖形用戶界面的工具包,是NOKIA公司的圖形化界面開發(fā)工具Qt的嵌入式版本,它通過QtAPI與LinuxI/O以及Framebuffer直接交互,擁有較高的運行效率,而且整體采用面向?qū)ο缶幊蹋瑩碛辛己玫伢w系架構(gòu)和編程模式。

Qt/embedded和Qt一樣,在4.5版本之后提供了三種不同的授權(quán)協(xié)議GPL,LGPL和Commercial.開發(fā)者使用QT/E開發(fā)的應(yīng)用程序要移植到不同平臺時,只需要重新編譯代碼,而不需要對代碼進行修改。并可以隨意設(shè)置程序界面的外觀、方便地為程序連接數(shù)據(jù)庫、使程序本地化、將程序與Java集成等。

2.使用Qt Creator設(shè)計界面

在Qt Creator中完成車載播放器工程的創(chuàng)建后首先是設(shè)計界面。界面可用代碼生成,也可用Qt Designer輔助設(shè)計。使用Qt Designer設(shè)計界面只需將界面中所需的窗口部件拖入ui界面文件中,然后設(shè)置屬性修改其顯示效果,最后使用布局控件設(shè)置布局效果。通過拖放窗口部件完成的界面在布局上不夠精確,因此本系統(tǒng)采用純代碼來完成界面開發(fā)。

本系統(tǒng)的界面主要包括的窗口部件有Table View、Push Button等。在界面的布局上,系統(tǒng)采用了手工布局方式。

手工布局方式通過基類Q W i d g e t提供的setGeometry()函數(shù)來設(shè)置子窗口部件的位置和大小,當(dāng)窗口大小改變的時候,重新計算窗口的大小或者變化比例,然后重載QWidget::resizeEvent(QResizeEvent*)函數(shù),能夠使得子窗口部件的大小和位置作出適應(yīng)性的改變。

如圖1所示為本系統(tǒng)的主界面:

界面設(shè)計的主要開發(fā)過程如下:

1)使基礎(chǔ)窗口QWidget繼承于主窗口QMainWindow,窗體構(gòu)造函數(shù)負(fù)責(zé)模板的初始化;

2)創(chuàng)建MyButton類構(gòu)造窗體按鈕部件,并對窗口部件中使用的對象以及函數(shù)進行聲明,包括圖標(biāo)、名稱、字體、文本、坐標(biāo)、畫筆、按鈕是否有效、重繪時間、鼠標(biāo)按下事件等;

3)添加按鈕的信號與槽。系統(tǒng)界面中每個功能按鈕都對應(yīng)一個信號和槽,信號和槽式Qt編程的核心技術(shù),通過信號可以將界面上的空間所發(fā)生的事件進行發(fā)射,槽函數(shù)負(fù)責(zé)接受相應(yīng)信號并作出響應(yīng)處理。如播放暫停按鈕,與其對應(yīng)的信號是單擊,它的單擊信號連接一個槽處理函數(shù),在這個函數(shù)中通過QProcess來向slave模式下的MPlayer發(fā)送命令,達到控制播放的目的。其他的控件在處理方式上都與播放暫停按鈕類似,都有自己得信號和槽。

3.軟件功能模塊設(shè)計

機車車輛車載播放器主要由音頻播放和視頻播放兩大部分組成,這兩部分存在著很多相同和相似的功能,為避免重復(fù)編碼,采用C++面向?qū)ο蟮哪K化設(shè)計思想,將兩部分中功能相似的部分抽取出來,形成獨立的功能模塊,提高了軟件的可重用性和系統(tǒng)的運行效率。各功能模塊均采用C++類來實現(xiàn),對模塊內(nèi)部的數(shù)據(jù)進行封轉(zhuǎn),對外提供接口供外部調(diào)用,一方面提高了系統(tǒng)的數(shù)據(jù)安全性,另一方面也使軟件編碼更加的規(guī)范。

為實現(xiàn)機車車輛車載播放系統(tǒng)的功能,創(chuàng)建了窗體文件用于設(shè)置車載播放器的窗體;創(chuàng)建了配置文件用于處理系統(tǒng)配置信息;創(chuàng)建了用于實現(xiàn)對數(shù)據(jù)庫操作的源文件;創(chuàng)建了觸摸屏控制文件以及歌曲列表文件。

具體功能模塊設(shè)計方式如下:

1)搜索歌曲

點擊搜索歌曲按鈕時,跳出一個對話框,當(dāng)用戶輸入了歌曲名或名稱中的部分內(nèi)容并確定后,發(fā)送消息到服務(wù)器端,服務(wù)器端對表song進行模糊查詢,得到符合的歌曲列表,將這些信息返回給客戶端,在客戶端形成一個QwidgetTable控件,用來顯示搜索的結(jié)果。當(dāng)用戶點擊其中的一行時,將相應(yīng)行的歌曲信息賦值給current并播放。

2)上一首

上一首按鈕連接了prev()函數(shù),它的功能是通過prev()函數(shù)來實現(xiàn)的。在此函數(shù)中,實現(xiàn)讀取usersong.xml文件中位置為songpos-1的歌曲信息,賦值給current,然后進行播放,實現(xiàn)上一首功能。

3)播放

當(dāng)點擊播放按鈕時,隱藏播放按鈕,顯示暫停按鈕,并讀取c u r r e n t中的信息,通過Phonon的函數(shù)play()實現(xiàn)播放。

4)暫停

當(dāng)點擊暫停按鈕時,隱藏暫停按鈕,顯示播放按鈕,調(diào)用Phonon中的pause()函數(shù),將播放暫停。

5)下一首

當(dāng)點擊下一首按鈕時,調(diào)用nextFile()函數(shù),并且當(dāng)歌曲播放完之后會產(chǎn)生一個aboutToFinish()信號,這個時候也會調(diào)用nextFile()函數(shù)。在此函數(shù)中調(diào)用readinformation()函數(shù),得到下一首的信息,并播放。

6)打開本地文件

Qt和QT/Embedded提供了一套標(biāo)準(zhǔn)的通用對話框為方便程序員進行某些特定功能對話框的編程,其中包括了文件對話框QFileDialog.通過彈出QFileDialog對話框,我們既可以選擇一個或者多個文件以及目錄,也可以輸入文件名或者路徑。它可以限制用戶只能選擇已經(jīng)存在的文件,也可以允許用戶輸入一個新的文件名;此外,使用過濾器,則只能選擇符合特殊標(biāo)準(zhǔn)的文件名。點擊打開按鈕會彈出獲取本地文件路徑和名稱的對話框,當(dāng)用戶選中后,因為它是本地文件,會直接把地址賦給播放的對象,當(dāng)播放完后繼續(xù)播放usersong.xml中的下一首。

7)靜音

音量的控制是通過Phonon::VolumSlid e r控件實現(xiàn)的,通過執(zhí)行語句:u i ->volumeSlider->setAudioOutput(audiooutput)將音量的控件連接到了音頻輸出的設(shè)備上,通過語句Phonon::createPath(mediaobject,audiooutput)音頻輸出的設(shè)備和播放的對象mediaobject連接,因此實現(xiàn)靜音功能。

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)關(guān)閉窗口

雙擊窗體空白處可關(guān)閉播放器。需重定義鼠標(biāo)雙擊事件調(diào)用close()函數(shù)加以實現(xiàn)。

10)數(shù)據(jù)庫操作

程序中使用SQLite數(shù)據(jù)庫對歌曲及用戶信息進行管理。

SQLite是D.Richard Hipp用C語言編寫的開源嵌入式數(shù)據(jù)庫引擎。它是完全獨立的,不具有外部依賴性,非常健壯。SQLite第一個Alpha版本誕生于2000年5月,至今已經(jīng)有11個年頭,最新版本SQLite3也已經(jīng)發(fā)布。SQLite是完全免費開源的軟件。

SQLite能夠運行在Windows/Linux/Unix等各種操作系統(tǒng)。SQLite源代碼大約3萬行,250KB大小,占用資源非常少。相比Mysql、PostgreSQL這兩款著名的開源數(shù)據(jù)庫,SQLite占用資源更少,處理速度更快,非常適合用于嵌入式系統(tǒng)開發(fā)中。

在系統(tǒng)中采用SQLite數(shù)據(jù)庫對歌曲信息結(jié)構(gòu)進行組織、存儲以及管理。通過使用SQLite建立歌曲信息數(shù)據(jù)庫表,然后就可以在程序通過相關(guān)接口函數(shù)對歌曲信息進行操作,如插入、刪除、更新、查詢等。采用SQLite數(shù)據(jù)庫進行歌曲信息的管理大大降低了編程的復(fù)雜性。

在具體的系統(tǒng)數(shù)據(jù)庫模塊中,采用了Qt連接SQLite數(shù)據(jù)庫的方式來操作數(shù)據(jù)庫。Qt框架中QtSql模塊提供了一個平臺無關(guān)且數(shù)據(jù)庫無關(guān)的訪問S Q L數(shù)據(jù)庫的接口。Qt中的每個數(shù)據(jù)庫連接用一個QSqlDatabase對象來表示,同時Qt也使用不同driver來和各種不同數(shù)據(jù)庫的API進行通訊。對于SQLite數(shù)據(jù)庫Qt提供了很好的支持和封裝,通過Qt的相關(guān)類可以很容易的進行數(shù)據(jù)庫操作。

要實現(xiàn)對S Q L i t e 數(shù)據(jù)庫進行操作首先需要創(chuàng)建一個關(guān)于數(shù)據(jù)庫的創(chuàng)建和鏈接的頭文件,然后在頭文件中通過創(chuàng)建QSqlDatabase數(shù)據(jù)庫連接對象來調(diào)用addDatabase()并設(shè)置相關(guān)函數(shù)的屬性,然后在工程文件的最后添加關(guān)于使用數(shù)據(jù)庫的聲明“QT+=sql”.

4.MPlayer播放器的控制

MPlayer是一款開源多媒體播放器,以GNU通用公共許可證發(fā)布。此款軟件可在各主流作業(yè)系統(tǒng)使用,例如Linux和其他類Unix系統(tǒng)、微軟的視窗系統(tǒng)及蘋果電腦的Mac OS X系統(tǒng)。MPlayer能夠播放大多數(shù)MPEG、VOB、AVI、OGG、VIVO、ASF/WMV、Qt/MOV、FLV、RM等媒體文件。相對其它播放器來說,MPlayer還具有資源占用非常少,不需要任何系統(tǒng)解碼器就可以播放各種媒體格式,在低配置的機器上使用等突出優(yōu)勢。所以對于運算速度相對較弱的嵌入式系統(tǒng)來說,MPlayer是一個很好的選擇。

在本文的系統(tǒng)設(shè)計中,選用了MPlayer作為系統(tǒng)的媒體播放器來進行媒體文件的播放以及控制。在系統(tǒng)的播放模塊中采用Qt的QProcess(進程類)通過start方法調(diào)用slave模式下的MPlayer產(chǎn)生一個進程,然后通過QProcess類的write方法向MPlayer發(fā)送控制命令,實現(xiàn)控制播放的目的。

5.小結(jié)

本論文詳細(xì)介紹了如何使用Qt Creator完成車載音樂播放系統(tǒng)的界面設(shè)計及程序代碼的編輯與運行。此車載播放系統(tǒng)可實現(xiàn)的功能如下:

1)具有美觀、易于理解和操作的主界面;

2)可按照多種方式對數(shù)據(jù)庫中的歌曲進行查找;

3)可實現(xiàn)歌曲的播放、暫停,以及上一首和下一首歌曲的切換;

4)所選歌曲可生成播放列表,列表可以循環(huán)播放,列表信息可修改,在列表中雙擊歌曲名稱可播放該歌曲;

5 ) 可對設(shè)備中存儲的歌曲進行刪除;

6)可播放外接存儲器中的歌曲。

同時,系統(tǒng)可以方便地移植到各種嵌入式設(shè)備中。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 播放器
    +關(guān)注

    關(guān)注

    5

    文章

    399

    瀏覽量

    37452
  • 多媒體
    +關(guān)注

    關(guān)注

    0

    文章

    501

    瀏覽量

    37016
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2113

    瀏覽量

    73744
收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式人機交互界面研究與實現(xiàn)

    考慮醫(yī)院環(huán)境,醫(yī)患使用場景等重要因素?! ∮布蛩亍 ∏度胧?b class='flag-5'>人機交互界面開發(fā),首先要基于適合的硬件平臺系統(tǒng)方能實現(xiàn)其功能,硬件平臺系統(tǒng)的核心
    發(fā)表于 11-29 15:52

    嵌入式人機交互界面研究與實現(xiàn)

    可靠性、穩(wěn)定性、安全性、便捷性;醫(yī)療類嵌入式人機交互界面設(shè)計必須考慮醫(yī)院環(huán)境,醫(yī)患使用場景等重要因素。 硬件因素嵌入式人機交互界面開發(fā),首先要基于適合的硬件平臺
    發(fā)表于 08-22 14:55

    嵌入式人機交互界面研究與實現(xiàn)

    可靠性、穩(wěn)定性、安全性、便捷性;醫(yī)療類嵌入式人機交互界面設(shè)計必須考慮醫(yī)院環(huán)境,醫(yī)患使用場景等重要因素。 硬件因素嵌入式人機交互界面開發(fā),首先要基于適合的硬件平臺
    發(fā)表于 11-26 10:38

    人機交互界面設(shè)計在產(chǎn)品設(shè)計中的應(yīng)用

    、結(jié)構(gòu)性。界面設(shè)計采取結(jié)構(gòu)化以減少復(fù)雜度?! 【唧w步驟:(1)進行產(chǎn)品設(shè)計前分析用戶特點。考慮不同用戶的認(rèn)知能力,滿足人的多樣性與文化的多樣性條件,實現(xiàn)用戶對人機界面的多樣性需求。(2)產(chǎn)品設(shè)計師設(shè)計
    發(fā)表于 01-25 16:18

    人機交互界面的色彩是什么?

    還記得此前的“藍黑白金裙”之爭嗎?這個分歧源于我們的眼中用來分辨顏色的錐狀細(xì)胞的差異,而人機界面中“藍黑白金裙”之爭同樣存在,這是什么原因?本文為你揭秘,并從色彩角度為大家介紹人機交互界面的設(shè)計。
    發(fā)表于 10-18 07:24

    嵌入式人機交互界面研究與實現(xiàn)

    接觸,最重要的因素就是它可以提供友好的用戶界面、圖像界面、靈活的控制方式、對專業(yè)知識要求低,甚至不需要嵌入式的知識就能讓人們很快、很容易掌握嵌入式產(chǎn)品的使用方法,因此在嵌入式系統(tǒng)開發(fā)工作中人機
    發(fā)表于 05-05 08:31

    智能液晶顯示模塊實現(xiàn)人機交互界面

    隨著工業(yè)制造技術(shù)的發(fā)展,HMI(人機界面)的應(yīng)用場景愈加廣泛,在能源、汽車、醫(yī)療、工控、充電樁等領(lǐng)域都有涉及。拓普微的智能液晶顯示模塊,能簡單迅速地實現(xiàn)人機交互界面,外部
    發(fā)表于 08-20 07:09

    人機交互與人機界面的區(qū)別

    人機交互與人機界面的區(qū)別人機交互的概念(變頻器基礎(chǔ)知識)人機交互、人機互動(Human-Computer Interface,簡寫HCI):是指人與計算機之間使用某種對話語言,以一定的
    發(fā)表于 09-10 08:42

    LCD和數(shù)字鍵盤實現(xiàn)人機交互界面

    引言目前,以LCD和數(shù)字鍵盤實現(xiàn)人機交互界面在智能終端中廣泛采用。在不同的應(yīng)用場合,對人機界面的要求也不同,一些情況下只要求簡單參數(shù)的顯
    發(fā)表于 12-22 06:09

    廣播電視系統(tǒng)人機交互界面的設(shè)計與實現(xiàn)

    本文介紹了一種廣播電視系統(tǒng)人機交互界面的設(shè)計方法,該系統(tǒng)以MSP430F149單片機為核心, 以LCM168651為菜單顯示的主要部件,以ZLG7289B為鍵盤掃描管理模塊;該設(shè)計方法
    發(fā)表于 08-11 08:17 ?23次下載

    人機交互系統(tǒng)界面設(shè)計方案解析

    播放按鍵,大至飛機上的儀表板、或是發(fā)電廠的控制室。本文將為您介紹幾種人機交互系統(tǒng)人機交互界面的設(shè)計方案。 基于ARM的信號發(fā)生器
    發(fā)表于 10-16 16:33 ?0次下載

    人機交互的內(nèi)容有哪些_人機交互主要研究什么

    一個交互界面的好壞,直接影響到軟件開發(fā)的成敗。友好人機交互界面的開發(fā)離不開好的交互模型與設(shè)計方法。因此,研究
    發(fā)表于 03-31 14:12 ?1.4w次閱讀

    基于車載人機交互界面設(shè)計分析

    汽車人機交互界面在汽車設(shè)計中重要程度在逐漸增大,而且軟件定義的界面、科技的進步、消費者需求的升級、互聯(lián)網(wǎng)新勢力造車崛起,都使得人機交互設(shè)計不斷創(chuàng)新且迭代快速。
    發(fā)表于 07-30 10:16 ?1104次閱讀
    基于<b class='flag-5'>車載</b>的<b class='flag-5'>人機交互</b><b class='flag-5'>界面</b>設(shè)計分析

    人機交互與人機界面的區(qū)別與聯(lián)系

    與計算機系統(tǒng)交互方式,也極大地提高了工作效率和生活質(zhì)量。而人機界面(Human-Machine Interface,HMI)作為人機交互的重要組成部分,其設(shè)計直接影響到
    的頭像 發(fā)表于 06-07 15:29 ?1096次閱讀

    人機交互界面是什么_人機交互界面的功能

    終端(OT),是指人與計算機系統(tǒng)之間的通信媒體或手段,是人與計算機之間進行各種符號和動作的雙向信息交換的平臺。   人機交互界面的主要作用是將人類的意圖轉(zhuǎn)化為計算機能夠理解和處理的形式,同時將計
    的頭像 發(fā)表于 06-22 11:03 ?2728次閱讀