戴 軍
(江蘇開放大學(xué)江蘇城市職業(yè)學(xué)院 江蘇·南京 210000)
我們常用QtCreator來設(shè)計(jì)嵌入式GUI并可以仿真調(diào)試,如果調(diào)試通過就可以將GUI移植到目標(biāo)機(jī)中使用。我們提出假設(shè)即通過Ubuntu中QtCreator設(shè)計(jì)GUI并通過RHEL編譯移植到S5pv210目標(biāo)機(jī)中運(yùn)行,可通過以下實(shí)驗(yàn)驗(yàn)證其可行性。
運(yùn)行QtCreator-新建文件或工程,選擇Qt控件項(xiàng)目-QtGui應(yīng)用,設(shè)置項(xiàng)目名稱為mainWidget,設(shè)置類名為Widget,基類為Qwidget,頭文件為widget.h,源文件為widget.cpp,界面文件為widget.ui,接著新建Qt設(shè)計(jì)師界面類,選擇界面模板為Dialog without Buttons,設(shè)置類名為loginDlg,頭文件為logindlg.h,源文件為logindlg.cpp,界面文件為logindlg.ui。
在界面文件logindlg.ui中放置“用戶名”和“登錄密碼”兩個(gè)Text Edit控件,在“用戶名”和“登錄密碼”后面分別放置兩個(gè)LineEdit控件,并將其objectName分別命名為usrLineEdit和pwdLineEdit,放置“登錄”和“退出”兩個(gè)Push Button控件,并將其objectName分別命名為loginBtn和exitBtn。單擊菜單“編輯”-“編輯信號(hào)/槽”或者按下快捷鍵F4,鼠標(biāo)左鍵按住并拖動(dòng)logindlg.ui界面中的退出按鈕到空白處并釋放,在配置連接設(shè)置對(duì)話框中將loginDlg(QDialog)選擇為close(),然后單擊確定退出設(shè)置。單擊菜單“編輯”-“編輯控件”或者按下快捷鍵F3回到編輯控件狀態(tài),鼠標(biāo)右鍵點(diǎn)擊ogindlg.ui界面中的登錄按鈕在彈出的菜單中選擇“轉(zhuǎn)到槽”,在轉(zhuǎn)到槽設(shè)置對(duì)話框的選擇信號(hào)中選擇clicked()并點(diǎn)擊確定進(jìn)入click事件的槽函數(shù),在其中寫入代碼accept();為使密碼顯示為黑點(diǎn)以及移除字符串開頭和結(jié)尾的空白字符,判斷用戶名和密碼輸入是否正確,同時(shí)保證輸入錯(cuò)誤的情況下,重新進(jìn)入登錄對(duì)話框并清空用戶名和密碼且光標(biāo)自動(dòng)跳轉(zhuǎn)到用戶名輸入框,可以將logindlg.cpp代碼修改如下:
如圖1所示,執(zhí)行以上程序,就可以實(shí)現(xiàn)輸入用戶名和密碼正確的情況下,點(diǎn)擊登錄按鈕就可以進(jìn)入主窗口并顯示qrs.png的圖片,如果輸入錯(cuò)誤,則彈出出錯(cuò)提示對(duì)話框。點(diǎn)擊退出按鈕退出程序。
圖1:mainWidget調(diào)試運(yùn)行界面
如圖2所示,將Ubuntu中的mainWidget工程文件夾拷貝至RHEL根目錄下,將RHEL中的qmake程序拷貝至mainWidget工程文件目錄中,運(yùn)行/mainWidget/qmake指令生成makefile文件,運(yùn)行make編譯生成可執(zhí)行目標(biāo)文件mainWidget。
圖2:mainWidget編譯
編寫設(shè)置環(huán)境變量以及運(yùn)行 mainWidget的腳本文件run.sh,腳本文件run.sh程序如下:
將可執(zhí)行目標(biāo)文件mainWidget、文件目錄img和run.sh打包壓縮下載到S5pv210實(shí)驗(yàn)箱中并解壓運(yùn)行run.sh,效果如圖3所示。
圖3:mainWidget移植和運(yùn)行效果
通過基于 QtCreator的嵌入式 GUI程序設(shè)計(jì)以及基于RHEL嵌入式 GUI程序編譯和移植,可以看到此方案對(duì)于S5pv210的應(yīng)用是完全可行的,可為類似的GUI設(shè)計(jì)及移植提供必要的啟示。之所以使用QtCreator來進(jìn)行嵌入式GUI設(shè)計(jì),是考慮到QtCreator集成了特定于Qt的功能,對(duì)Qt類結(jié)構(gòu)可一目了然,集成了Qt Designer可視化布局和格式構(gòu)建器,只需要單擊一下就可以生成和運(yùn)行Qt項(xiàng)目。