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