<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于Qt的嵌入式Linux通訊簿程序設計

基于Qt的嵌入式Linux通訊簿程序設計

作者: 時(shí)間:2018-08-28 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/201808/387883.htm

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

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

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

1 基于Qt 的嵌入式Linux 通訊簿程序設計

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

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

1.1 生成工程文件

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

progen -t app1 t -o AddressBook. pro

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

1.2 使用QtDe signer 設計程序窗體

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

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

圖1 信號與槽連接抽象圖

以下是通訊簿程序主窗口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 所示) 設計完成后,將通訊簿主窗口及新建聯(lián)系人窗口分別保存為AddressBook. ui 和New. ui 界面文件。

圖2 通訊簿主窗口

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

1.3 生成窗體類(lèi)的頭文件和源文件

使用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í)現新建、編輯、刪除、查詢(xún)聯(lián)系人信息等功能還需要在A(yíng)ddressBook1cpp 文件里添加相應的功能實(shí)現代碼。

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

void AddressBook∶∶addSlot ()


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: 嵌入式

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>