www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 電源 > 數(shù)字電源
[導(dǎo)讀]摘 要: 隨著嵌入式系統(tǒng)的發(fā)展,在Linux 下使用Qt 開(kāi)發(fā)嵌入式應(yīng)用程序是嵌入式圖形用戶界面( GUI) 系統(tǒng)應(yīng)用研究的重點(diǎn)。通過(guò)一個(gè)通訊簿程序的設(shè)計(jì),給出了基于Qt 的嵌入式L

摘 要: 隨著嵌入式系統(tǒng)的發(fā)展,在Linux 下使用Qt 開(kāi)發(fā)嵌入式應(yīng)用程序是嵌入式圖形用戶界面( GUI) 系統(tǒng)應(yīng)用研究的重點(diǎn)。通過(guò)一個(gè)通訊簿程序的設(shè)計(jì),給出了基于Qt 的嵌入式Linux 程序開(kāi)發(fā)的關(guān)鍵技術(shù),包括QtDesigner、信號(hào)與槽機(jī)制的使用、程序主要功能代碼的實(shí)現(xiàn)以及程序開(kāi)發(fā)的整體過(guò)程。

Linux 操作系統(tǒng)具有開(kāi)放的源碼、高效穩(wěn)定的內(nèi)核、良好的開(kāi)發(fā)環(huán)境以及支持多種硬件平臺(tái)的特點(diǎn),且具有可配置性和模塊化的特點(diǎn); Qt 是一個(gè)面向?qū)ο蟮闹С侄嗖僮飨到y(tǒng)平臺(tái)的應(yīng)用程序開(kāi)發(fā)框架,它采用了一種獨(dú)有的Signal2Slot (信號(hào)與槽) 的對(duì)象間通信機(jī)制,以代替?zhèn)鹘y(tǒng)的不安全的回調(diào)技術(shù)。Qt 的自由版開(kāi)放了源代碼,因此開(kāi)發(fā)人員在Linux 下使用Qt 進(jìn)行嵌入式系統(tǒng)開(kāi)發(fā)是非常理想的選擇。

從目前國(guó)內(nèi)嵌入式系統(tǒng)( Embedded system) 的開(kāi)發(fā)情況來(lái)看,在Linux 下使用Qt 來(lái)開(kāi)發(fā)嵌入式GUI 程序還不是很多,且相關(guān)中文資料也較少。

究其原因,主要是由于Qt 歷史較短,其比較穩(wěn)定的版本是在2002 年之后才逐漸被國(guó)內(nèi)工程人員使用,雖然功能強(qiáng)大,但中文文檔匱乏,延緩了在國(guó)內(nèi)的普及。另外一個(gè)主要原因是雖然嵌入式技術(shù)隨著半導(dǎo)體技術(shù)的進(jìn)步得到長(zhǎng)足的發(fā)展,但較為成熟的嵌入式操作系統(tǒng)及支持嵌入式操作系統(tǒng)的平臺(tái)是在近幾年才逐步發(fā)展起來(lái),而Qt 需要在操作系統(tǒng)的支持下才可使用。文獻(xiàn)[ 2 ]~[ 4 ]從不同的方面闡述了Linux 下使用Qt 進(jìn)行嵌入式開(kāi)發(fā)的一般過(guò)程和特點(diǎn),但沒(méi)有對(duì)其關(guān)鍵技術(shù)及程序開(kāi)發(fā)實(shí)現(xiàn)過(guò)程進(jìn)行具體的說(shuō)明。為此,筆者通過(guò)通訊簿程序的設(shè)計(jì),從工程文件的建立到可執(zhí)行程序的生成,詳細(xì)給出了其中關(guān)鍵技術(shù)的實(shí)現(xiàn)及關(guān)鍵代碼的運(yùn)用。

1 基于Qt 的嵌入式Linux 通訊簿程序設(shè)計(jì)

在嵌入式開(kāi)發(fā)之前,首先要搭建好開(kāi)發(fā)環(huán)境。 正確設(shè)置編譯器、Qt 及Qt E 環(huán)境變量對(duì)后續(xù)程序編譯過(guò)程至關(guān)重要。本設(shè)計(jì)使用的嵌入式處理器為三星公司的基于ARM 920 T 的S3C2410X芯片,最高工作頻率203 MHz. 操作系統(tǒng)為REDHA T L INUX 910 , 內(nèi)核版本214118. 串口通信程序?yàn)镸INICOM , 使用Tro11 Tech 公司發(fā)布的自由版: qt2x1122. 3. 2 ,qt2embedded22. 3. 10 , 使用arm2linux2gcc231411 編譯器。

通訊簿程序主要記錄聯(lián)系人的姓名、電話、郵件地址及地址信息,具有新建、編輯、刪除、查詢聯(lián)系人信息等功能。

1.1 生成工程文件

通常一個(gè)應(yīng)用程序?qū)?yīng)一個(gè)工程。工程文件的作用是管理當(dāng)前項(xiàng)目中所有的文件及其關(guān)系,可以使用progen 工具來(lái)生成程序的工程文件:

progen -t app1 t -o AddressBook. pro

生成的AddressBook1pro 工程文件并不完整,還需后續(xù)添加工程所包含的頭文件、源文件等信息。

1.2 使用QtDe signer 設(shè)計(jì)程序窗體

QtDesigner 是Qt 的一個(gè)可視化的程序界面設(shè)計(jì)工具,使用它來(lái)設(shè)計(jì)程序的界面非常方便,從而開(kāi)發(fā)者可以專注于程序功能的實(shí)現(xiàn)。通訊簿主窗口包括聯(lián)系人信息查詢、新建、編輯及刪除功能部件。查詢功能使用2 個(gè)TextLable , 1 個(gè)LineEdit ,1 個(gè)ComboBox 及1 個(gè)PushButton 部件,其中ComboBox 可以設(shè)置NAME , Telep hone , Email ,Address 4 種查詢方式。新建聯(lián)系人可以單獨(dú)彈出新建窗口來(lái)實(shí)現(xiàn),使用4 個(gè)TextLable 及4 個(gè)LineEdit 部件。編輯和刪除聯(lián)系人由1 個(gè)ListView 和2 個(gè)PushBut ton 部件構(gòu)成,其中ListView 包括1 個(gè)List 和4 個(gè)Column ( 包括Name , Telep hone ,Email ,Address)。

在Qt 中,"事件驅(qū)動(dòng)"通過(guò)Signal2Slot (信號(hào)和槽) 機(jī)制實(shí)現(xiàn)。Signal 主要是各可視化組件產(chǎn)生的事件,這些事件通常由Qt 控件預(yù)定義,如按鈕單擊事件clicked 等。Slot 是對(duì)某個(gè)事件的處理方法,它也屬于類的成員函數(shù),其編寫和普通成員函數(shù)類似。當(dāng)需要處理某組件的Signal 事件并要求把定義好的Slot 作為響應(yīng)事件的方法時(shí),只要在實(shí)現(xiàn)文件中使用connect 函數(shù)把Signal 和指定的Slot 連接起來(lái)即可。當(dāng)對(duì)象改變其狀態(tài)時(shí),信號(hào)被發(fā)送,對(duì)象不關(guān)心有沒(méi)有其它對(duì)象接收到這信號(hào),可以將信號(hào)和槽通過(guò)connect 函數(shù)任意相連。信號(hào)與槽的連接原理如圖1 所示。

 

 

圖1 信號(hào)與槽連接抽象圖

以下是通訊簿程序主窗口5 個(gè)按鈕的Signal2Slot 的connect 代碼:

connect (add ,SIGNAL (clicked () ) ,this , SLOT(addSlot) ) ) ;

connect (edit , SIGNAL (clicked () ) ,this , SLOT(editSlot) ) ) ;

connect (del , SIGNAL (clicked () ) ,this , SLOT(delSlot) ) ) ;

connect (exit , SIGNAL (clicked () ) ,this , SLOT(exitSlot) ) ) ;

connect ( search , SIGNAL (clicked ( ) ) , this , SLOT ( searchSlot) ) ) ;

窗口(如圖2 及圖3 所示) 設(shè)計(jì)完成后,將通訊簿主窗口及新建聯(lián)系人窗口分別保存為AddressBook. ui 和New. ui 界面文件。

 

 

圖2 通訊簿主窗口

 

 

圖3 新建聯(lián)系人窗口

1.3 生成窗體類的頭文件和源文件

使用Qt 提供的uic 工具通過(guò)界面文件AddressBook.ui 來(lái)生成AddressBook. h 文件和AddressBook.cpp 文件(同樣,使用uic 工具通過(guò)界面文件New.ui 來(lái)生成New.h 和New.cpp 文件) :

uic -o AddressBook. h AddressBook. ui

uic -o AddressBook. cpp -impl AddressBook. h

AddressBook. ui

通訊簿要實(shí)現(xiàn)新建、編輯、刪除、查詢聯(lián)系人信息等功能還需要在AddressBook1cpp 文件里添加相應(yīng)的功能實(shí)現(xiàn)代碼。

為實(shí)現(xiàn)新建聯(lián)系人功能,在文件AddressBook1cpp 中定義一個(gè)AddressBook 類的成員函數(shù):

void AddressBook∶∶addSlot ()[!--empirenews.page--]

新建聯(lián)系人信息包括姓名、電話、郵件及地址,在函數(shù)中定義一個(gè)字符串類型函數(shù):

st ring lSQL St ring

并給lSQL St ring 賦值:

lSQLSt ring = " Create Table " + Const ∶∶DBTBL _ADDRESS + " (" +

Const∶∶DBCOL _NAME + " ," + Const ∶∶DBCOL _TEL EPHONE + " ," +

Const∶∶DBCOL _ EMAIL + " ," + Const ∶∶DBCOL _ADDRESS + " ," + " ) " ;

編輯聯(lián)系人信息時(shí),定義成員函數(shù):

void AddressBook∶∶edit Slot ()

分別在姓名、電話、郵件及地址欄中輸入信息:

ent ry - > setName (lRows[0 ]) ; / / 在第1 行0 列輸入name

ent ry - > set TelePhone (lRows[ 1 ]) ;/ / 在第1 行1 列輸入telephone

ent ry - > set Email (lRows[2 ]) ; / / 在第1 行2 列輸入email

ent ry - > setAddress (lRows[3 ]) ; / / 在第1 行3 列輸入address

刪除聯(lián)系人信息時(shí),定義成員函數(shù):

void AddressBook∶∶delSlot ()

選擇要?jiǎng)h除的聯(lián)系人,從數(shù)據(jù)庫(kù)刪除該聯(lián)系人信息:

st ring lSQLSt ring ;

lSQLSt ring = " Delete f rom " + Const ∶∶DBTBL _ADDRESS + " where " +

Const∶∶DBCOL_NAME + " = " + aName ;

查詢聯(lián)系人時(shí),定義成員函數(shù):

void AddressBook∶∶searchSlot ()

在查詢框中輸入聯(lián)系人的姓名、電話、郵件及地址信息之一,選擇相應(yīng)的查詢方式:

st ring lSQLSt ring = " Select " + Const ∶∶DBCOL _NAME + " ,"

+ Const ∶∶DBCOL _ TEL EPHONE + " ," + Const ∶∶DBCOL_EMAIL + " ,"

+ Const∶∶DBCOL _ADDRESS + " f rom " + Const ∶∶DBTBL_ADDRESS

+ " where " + Const ∶∶DBCOL _ NAME + " = " +aName ;

受篇幅限制,AddressBook1 h , New1 h ,New1cpp ,SQL1cpp ,SQL1 h 代碼不再給出。

1.4 編寫主函數(shù)

每一個(gè)Qt 應(yīng)用程序都包含一個(gè)主函數(shù)main1cpp . 主函數(shù)是應(yīng)用程序執(zhí)行的入口點(diǎn)。以下是AddressBook 的主函數(shù)文件main1cpp 的關(guān)鍵代碼:

int main (int argc , char 3 3argv)

{

QApplication AddressBook ( argc , argv ) ;/ / 創(chuàng)建Qapplication 對(duì)象,管理整個(gè)程序資源

AddressBook 3 AddressBook = new AddressBook(log) ;/ / 創(chuàng)建程序主窗口

app . setMainWidget ( mainWin ) ;/ / 設(shè)置mainWin 部件為程序的主部件

mainWin - > show() ;/ / 使mainWin 部件可視

return AddressBook. exec () ;/ / 把程序控制權(quán)交還給Qt

}

1.5 編輯工程文件

代碼編寫完成后,需要把文件AddressBook1cpp , AddressBook1 h , New1 h ,New1cpp , SQL1 h 及SQL1cpp 添加到工程文件AddressBook1pro 中:

HEADERS = AddressBook. h New. h SQL . h

SOURCES = AddressBook. cpp New. cpp SQL.cpp main. cpp

1.6 生成可執(zhí)行文件

編譯器是根據(jù)Makefile 文件內(nèi)容來(lái)進(jìn)行編譯的,所以需要生成一個(gè)Makefile 文件1Qt 提供的qmake 工具可以從一個(gè)工程文件( . pro 文件) 中產(chǎn)生Makefile 文件,然后再使用make 命令對(duì)整個(gè)工程進(jìn)行編譯鏈接:

生成的二進(jìn)制文件AddressBook 就是可以直接運(yùn)行的可執(zhí)行文件。程序運(yùn)行結(jié)果如下面圖示,圖4是按照姓名(Name) 查詢聯(lián)系人Mat rix 的信息,圖5是編輯新聯(lián)系人Mat rix 的信息。

 

 

圖4 按姓名查詢聯(lián)系人

 

 

圖5 編輯新聯(lián)系人信息

程序編譯成功后可先在Virt ual f ramebuffer(虛擬緩沖幀) 中運(yùn)行,確證無(wú)誤后再交叉編譯在開(kāi)發(fā)板上運(yùn)行。交叉編譯時(shí)要確保$Q TEDIR/ lib 下有需要在開(kāi)發(fā)板上運(yùn)行的庫(kù)文件。

2 結(jié)論

所設(shè)計(jì)的通訊簿程序具有對(duì)聯(lián)系人的姓名、電話、郵件地址及通訊地址等信息的記錄、新建、編輯、刪除、查詢等功能,且可按照姓名、電話、郵件地址及通訊地址4 種查詢方式來(lái)檢索聯(lián)系人。程序的設(shè)計(jì)很好地體現(xiàn)了Qt 的信號(hào)與槽機(jī)制,并且使用QtDesigner 可方便地進(jìn)行可視化程序界面設(shè)計(jì),通過(guò)使用Qt 中豐富的類函數(shù),利用其面向?qū)ο蠛湍K化的特征,避免了繁瑣的X 編程。通訊簿程序的設(shè)計(jì)對(duì)在Linux 下使用Qt 開(kāi)發(fā)其他嵌入式GUI 程序具有一定的指導(dǎo)意義。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉