亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Qt的嵌入式虛擬鍵盤設(shè)計與實現(xiàn)

        2020-08-20 08:56:26
        山西電子技術(shù) 2020年4期
        關(guān)鍵詞:源文件鼠標(biāo)按鍵

        呂 澤

        (山西大眾電子信息產(chǎn)業(yè)集團(tuán)有限公司,山西 太原 030024)

        0 引言

        隨著交互技術(shù)的發(fā)展,觸摸交互方式已取代傳統(tǒng)的鍵盤、鼠標(biāo)等輸入方式。虛擬鍵盤作為觸摸屏上的重要信息輸入工具,代替了傳統(tǒng)的機械鍵盤,通過點擊觸摸屏上的按鍵完成數(shù)字、符號等內(nèi)容的輸入。

        Qt是跨平臺C++圖形用戶界面應(yīng)用程序開發(fā)框架,它既可以開發(fā)GUI程序,也可用于開發(fā)非GUI程序,比如控制臺工具和服務(wù)器。Qt是面向?qū)ο蟮目蚣?,使用特殊的代碼生成擴展以及一些宏,并且允許真正地組件編程。Qt支持桌面操作系統(tǒng)和嵌入式操作系統(tǒng)[1]。本文介紹了基于Qt設(shè)計和實現(xiàn)的虛擬鍵盤,以及設(shè)計流程,該虛擬鍵盤具有操作方便的特點,可以實現(xiàn)字母、數(shù)字、刪除等多種輸入方式,并且能夠應(yīng)用于基于Linux操作系統(tǒng)的觸摸屏設(shè)備。

        1 虛擬鍵盤設(shè)計原理

        1.1 Qt鼠標(biāo)鍵盤事件

        事件是對各種應(yīng)用程序需要知道的由應(yīng)用程序內(nèi)部或者外部產(chǎn)生的事情或者動作的總稱,一個事件可以是單獨的事件類型,也可以包含多個事件類型。在Qt中事件有定時器事件QTimerEvent、鍵盤事件QKeyEvent、上下文菜單事件QContextMenuEvent、關(guān)閉事件QCloseEvent等。

        QMouseEvent是Qt中的鼠標(biāo)事件,例如,在窗口中,當(dāng)按下鼠標(biāo)左右鍵或移動鼠標(biāo)都會產(chǎn)生QMouseEvent。通過該事件可以得到當(dāng)前鼠標(biāo)左右鍵按下狀態(tài)、鼠標(biāo)移動位置等信息。對于處理鼠標(biāo)事件的函數(shù)來說,通常進(jìn)行重定義部件以完成自定義的操作。鼠標(biāo)的滾輪事件用QWheelEvent表示,該事件能得到鼠標(biāo)滾輪移動的距離、方向。除QMouseEvent事件外,還有描述鍵盤的QKeyEvent事件,當(dāng)鍵盤上的某個按鍵被按下或釋放時,將會發(fā)送鍵盤事件給調(diào)用鍵盤輸入焦點的部件[2]。

        1.2 Qt通信機制

        虛擬鍵盤對象之間通信采用Qt的通信機制,Qt的通信機制是信號-槽,信號-槽是一種高級接口,主要用來實現(xiàn)對象間通信,這種通信機制取代了傳統(tǒng)的回調(diào)函數(shù)方式,實現(xiàn)了對象間靈活的傳遞消息,具有更高的安全性。在該通信機制中,當(dāng)某個控件狀態(tài)發(fā)生變化時,相應(yīng)的控件就會發(fā)射(emit)一個信號(signal),而與該信號進(jìn)行連接(connect)的信號槽(slot)負(fù)責(zé)監(jiān)視接收信號,因此,當(dāng)一個信號被發(fā)射時,與其相連接的信號槽將被調(diào)用,執(zhí)行信號槽里面的相應(yīng)操作[3]。而信號與槽的關(guān)系不只是簡單的一對一模式,還存在一對多、多對一、多對多、信號觸發(fā)信號的情況,如果存在一個信號與多個信號槽之間進(jìn)行連接,則會使相關(guān)的信號槽都會被觸發(fā),并且執(zhí)行的順序是隨機的。信號-槽具體關(guān)系模型如圖1所示。

        圖1 Qt關(guān)系模型

        雖然,信號-槽具有很好的執(zhí)行效率,但是,與回調(diào)函數(shù)相比,還是存在一定的缺點,所以應(yīng)注意信號-槽的使用。在自定義信號槽時,要避免間接地形成死循環(huán)。

        2 虛擬鍵盤的界面設(shè)計

        本文的虛擬鍵盤是在Linux操作環(huán)境下使用Qt設(shè)計的鍵盤,根據(jù)實際項目需求,確定鍵盤大小、按鍵個數(shù)、按鍵大小、按鍵位置等屬性,并且點擊主界面的LineEdit彈出虛擬鍵盤,能夠進(jìn)行信息輸入,將所輸入信息更新至主界面的LineEdit。虛擬鍵盤的按鍵包含功能鍵和輸入鍵,其中,功能鍵包括Backspace(刪除)、Clr(清除)、Enter(確定)、Esc(退出),輸入鍵包括數(shù)字、字母、小數(shù)點。鍵盤布局圖如圖2所示。

        圖2 鍵盤布局圖

        本文設(shè)計的虛擬鍵盤主要采用Qt的QApplication、QPushButton、QWidget、QpushButtonGroup、QLineEdit及自定義類實現(xiàn),通過QGridLayout設(shè)計虛擬鍵盤界面,調(diào)用setLayout()、addWidget()、setText()、setFixedsize()等函數(shù)實現(xiàn)按鍵整體布局。

        3 虛擬鍵盤的實現(xiàn)

        基于Qt的虛擬鍵盤設(shè)計如下:

        1) 在工程自定義編輯框源文件中,從QLineEdit派生一個InputLineEdit類,重寫鼠標(biāo)點擊事件,并且點擊輸入框發(fā)送LineEdit_Show(QString str)信號,用來顯示虛擬鍵盤,自定義編輯框設(shè)計流程如圖3所示。

        圖3 自定義編輯框設(shè)計流程圖

        2) 在工程虛擬鍵盤源文件中分別創(chuàng)建QWidget對象KeyboardWidget、QPushButton對象KeyButton、InputLineEdit對象KeyLineEdit、QLayout對象KeyboardLayout。根據(jù)項目界面需求,對虛擬鍵盤的界面進(jìn)行設(shè)計,同時將KeyboardWidget的邊框和標(biāo)題欄進(jìn)行隱藏,達(dá)到虛擬鍵盤能夠進(jìn)行拖拽操作。點擊虛擬鍵盤的Enter按鍵發(fā)送SendMessage(QString data)信號,此信號用來將鍵盤上輸入結(jié)果送至主界面輸入框。虛擬鍵盤設(shè)計流程如圖4所示。

        圖4 虛擬鍵盤設(shè)計流程圖

        由于傳統(tǒng)的虛擬鍵盤是對每個QPushButton添加click信號,并且在各自對應(yīng)的信號槽中實現(xiàn)按鍵功能,此方法設(shè)計的代碼雖然可實現(xiàn)功能,但會造成代碼數(shù)量大,執(zhí)行效率慢。為了減少代碼冗余,利用Button的屬性和按鍵數(shù)組對信號和信號槽進(jìn)行關(guān)聯(lián)。

        3) 在工程主界面源文件中創(chuàng)建InputLineEdit對象KeyLineEdit,設(shè)置KeyLineEdit的大小、樣式等屬性,對KeyLineEdit添加sender()命令,用于判斷虛擬鍵盤的調(diào)用者。在該源文件中添加LineEdit_Show信號對應(yīng)的槽,用于將調(diào)用者與虛擬鍵盤顯示界面進(jìn)行關(guān)聯(lián),同時,添加SendMessage信號對應(yīng)的信號槽,將虛擬鍵盤的輸入信息更新到主界面的編輯框中,完成虛擬鍵盤的輸入功能。編輯框調(diào)用鍵盤設(shè)計流程如圖5所示。

        圖5 編輯框調(diào)用鍵盤設(shè)計流程圖

        4 結(jié)束語

        本文通過基于Qt設(shè)計的虛擬鍵盤,運行環(huán)境為Linux操作系統(tǒng),可以在核心板imx6上進(jìn)行移植,以及在觸摸屏設(shè)備上測試成功,能夠有效地、簡單地替代機械鍵盤,為具有嵌入式系統(tǒng)的設(shè)備提供更經(jīng)濟(jì)、更合適的服務(wù)。

        猜你喜歡
        源文件鼠標(biāo)按鍵
        基于有限狀態(tài)機的按鍵檢測程序設(shè)計
        電子制作(2021年3期)2021-06-16 03:14:26
        Progress in Neural NLP: Modeling, Learning, and Reasoning
        Engineering(2020年3期)2020-09-14 03:42:00
        網(wǎng)絡(luò)社區(qū)劃分在軟件質(zhì)量問題分析中的應(yīng)用
        基于源文件可疑度的軟件缺陷定位方法研究
        一種多方向?qū)Ч獍存I結(jié)構(gòu)設(shè)計
        電子制作(2016年1期)2016-11-07 08:43:05
        LKJ基礎(chǔ)數(shù)據(jù)源文件自動編制系統(tǒng)的研究
        誤寫C源文件擴展名為CPP的危害
        按鍵的多種狀態(tài)檢測及消抖處理方法
        家電科技(2013年4期)2013-07-09 10:55:08
        解析某型號手機按鍵檢測程序的缺陷
        45歲的鼠標(biāo)
        99亚洲男女激情在线观看| 亚洲天堂av一区二区三区不卡 | 无码一区二区三区不卡AV| 手机在线免费av网址| 91超精品碰国产在线观看| 国产精品国产三级国av在线观看| 四虎影视国产在线观看精品| 国产91精品丝袜美腿在线| 中文字幕影片免费人妻少妇| 国产一区二区三区免费观看在线| 精品少妇一区二区三区视频| 成在线人免费无码高潮喷水| 一区二区二区三区亚洲| 中文字幕乱码熟妇五十中出| 国自产偷精品不卡在线| 国产精品一级av一区二区| 人妻制服丝袜中文字幕| 中文字幕乱偷无码av先锋蜜桃| 国产精品第1页在线观看| 亚洲影院在线观看av| 国产一区二区黄色录像| 国产美女自慰在线观看| 国产成人久久蜜一区二区| 熟女少妇精品一区二区三区| 无码人妻精品一区二区三区东京热| 久久精品视频在线看99| 丁香九月综合激情| 涩涩鲁精品亚洲一区二区| 手机看片久久国产免费| 亚洲国产欧美日韩一区二区| 日韩男女av中文字幕| 噜噜综合亚洲av中文无码| 76少妇精品导航| 伊人不卡中文字幕在线一区二区| 国产手机在线观看一区二区三区| 欧洲freexxxx性少妇播放| 最新国产成人在线网站| 亚洲中文字幕一区二区在线| 国产永久免费高清在线| 国产精品23p| 五月综合丁香婷婷久久|