基于QT/E的嵌入式Linux系統的軟鍵盤(pán)實(shí)現
2 QT/E通信機制
在圖形界面編程時(shí),我們經(jīng)常要實(shí)現界面之間的相互切換或者相互通知,更具體的來(lái)說(shuō)就是需要實(shí)現類(lèi)與類(lèi)之間的相互通信。比如,在軟鍵盤(pán)的設計中,當一個(gè)事件產(chǎn)生時(shí),系統就會(huì )發(fā)出一個(gè)信號。信號和槽(Signal&slot)機制是QT的核心特征,在QT庫中有很多已經(jīng)設置好的信號,比如:clicked()、triggered()等,開(kāi)發(fā)人員也可以根據需要來(lái)自定義某些信號。事件的響應對應著(zhù)QT窗口里的槽函數,和信號類(lèi)似,系統有很多預定義的槽,比如exit()、quit()等,用戶(hù)也可以根據需要來(lái)添加自己的槽函數。
當對象改變其狀態(tài)時(shí),信號就由該對象發(fā)射(emit)出去,這就是對象所要做的全部事情,它不知道另一端是誰(shuí)在接收這個(gè)信號。這就是真正的信息封裝,它確保對象被當作一個(gè)真正的軟件組件來(lái)使用。槽用于接收信號,但它們是普通的對象成員函數。一個(gè)槽并不知道是否有任何信號與自己相連接。而且,對象并不了解具體的通信機制??梢詫⒑芏嘈盘柵c單個(gè)槽進(jìn)行連接,也可以將單個(gè)信號與很多槽進(jìn)行連接,甚至于將一個(gè)信號與另外一個(gè)信號相連接也是可能的。
因此,整個(gè)QT窗口的設計簡(jiǎn)單、靈活且擴展性好。信號與槽之間的鏈接一般用connect()函數來(lái)實(shí)現,具體關(guān)聯(lián)方式和實(shí)現函數如圖2所示:本文引用地址:http://dyxdggzs.com/article/148906.htm
3 基于QT/E軟鍵盤(pán)的實(shí)現
文中主要根據項目的實(shí)際需要,在軟鍵盤(pán)上制定了數字鍵、字母鍵、退出鍵和確定鍵。具體分兩步實(shí)現,第一步:在基于linux環(huán)境的PC機上制定軟鍵盤(pán),并編寫(xiě)代碼實(shí)現其按鍵功能;第二步:生成能夠在A(yíng)RM板上運行的代碼,并移植到ARM板上。
3.1 PC機x11環(huán)境下制定軟鍵盤(pán)的模型
根據項目的實(shí)際需求,在PC機x11/QT環(huán)境下設計了軟鍵盤(pán)界面,該軟鍵盤(pán)具有數字鍵、字母鍵、退出鍵和確定鍵,總共42個(gè)按鍵,如圖3所示。在linux環(huán)境的QT designer下,創(chuàng )建新的widget,然后根據項目中所需要的按鍵個(gè)數來(lái)確定軟鍵盤(pán)的大小,在此,選擇軟鍵盤(pán)的外框大小為:540x160。軟鍵盤(pán)外框搭建完成之后,需要在軟鍵盤(pán)區域內加入實(shí)際所需要的按鍵。將Widget Box下Buttons選項中的PushButton按鍵拖入到軟鍵盤(pán)區域內,在PushButton按鍵屬性的文本編輯中填入按鍵值,比如“1”。在PushButton按鍵屬性的名字編輯中填入按鍵名,比如“n1”。
同理,在軟鍵盤(pán)區域內拖入實(shí)際所需要按鍵個(gè)數的按鍵,根據所需要的鍵值修改每個(gè)按鍵上面的文本屬性和名字屬性。按照一般鍵盤(pán)的布局對它們進(jìn)行排列
DIY機械鍵盤(pán)相關(guān)社區:機械鍵盤(pán)DIY
評論