使用TouchGFX開發(fā)STM32界面應用之入門篇(三)-- 多屏呈現(xiàn)與MVP框架(1)

在上一講中,我們簡單講解了touchgfx按鈕控件的使用以及消息響應的編程方法。本文將介紹如何使用touchgfx開發(fā)多個屏幕界面的應用,并引出touchgfx編程使用的一個重要的基本概念:MVP框架模式。關于MVP的說明可參考這個鏈接??梢园袽VP簡單理解為一種“規(guī)范的”保存用戶數(shù)據(jù)和訪問數(shù)據(jù)的方法。

下面用一個模擬時鐘的具體例子來說明。我們創(chuàng)建2個屏幕--screen,一個是時間設置界面,一個是數(shù)字時鐘界面:


圖一 設置界面


圖二(1) 主界面,圓弧實際是伸縮的動畫


圖二(2)

具體實現(xiàn)如下:

一、啟動?TouchGFX 4.10.0 Designer,創(chuàng)建一個新的Application(項目名稱可自定):


圖三

然后將屏幕上要放置的圖形控件文件copy到對應的image子目錄中(圖形文件資源包下載地址):


圖四

還需要做一個準備工作:新增一個25px的字體、供按鈕顯示提示文字之用,并設置40px字體的 Wildcard Ranges 為 0-9 (為了在Text Area控件中顯示數(shù)字):


圖五

第一個Screen為時鐘參數(shù)的配置界面,外觀如下:


圖六

左半部分的跟“小時”有關的幾個控件的配置參數(shù)如下:

圖七

顯示小時數(shù)值的?textAreaHour 的配置如下2個圖片:


圖八


圖九

“增大”箭頭:


圖十

這里,向上箭頭對應的圖片,是從下圖的 Released Image 下拉框、然后選擇 Project、出現(xiàn)8個方格圖標、再選擇向上箭頭得到的:


圖十一

Pressed Image下拉框做同樣處理、選擇那個灰色的向上箭頭即可。

“小時”下方的 Save 按鈕是保存設置的小時數(shù)值,命名為 buttonSaveHour,配置如下:


圖十二

右半邊跟“分鐘”設置有關的幾個控件需做類似配置,篇幅所限、此處略過。

最下邊的 Clock 按鈕是切換到另一個Screen的,命名為 buttonClock,配置如下:


圖十三

第一個Screen的界面配置完畢,下面添加各個按鈕的消息響應代碼。先在 Touchgfx Designer 中配置“動作觸發(fā)”對應的C++語言處理函數(shù):


圖十四

其他3個調(diào)整數(shù)值的箭頭做類似配置,函數(shù)名稱(即上圖中的 Function Name 輸入框)分別設置為:buttonHourDownClicked、 buttonMinuteUpClicked 和?buttonMinuteDownClicked。以及:


圖十五

類似地配置“分鐘”下方的 Save 按鈕,唯一不同的是把 Function Name 改為?buttonSaveMinuteClicked。好了,下面跳轉(zhuǎn)到程序代碼部分,點擊?TouchGFX Designer 界面右下角的 “Browse Code”,彈出生成的項目文件代碼所在的目錄,找到 Application.sln:


圖十六

雙擊 ?Application.sln 啟動VS,進入代碼編輯界面。如果VS啟動后彈出如下提示窗:


圖十七

一定要點擊 OK 按鈕、免去之后VS因編譯版本不同而提示錯誤。(Touchgfx Designer 4.00自動生成的VS項目使用的是較舊版本的編譯工具鏈、造成與VS2003默認的編譯工具鏈不匹配,會產(chǎn)生錯誤。這個錯誤是可以通過重新配置正確的編譯器版本來修正的,此處就不詳述了)

在VS中打開?Screen1View.hpp 文件,添加2個記錄小時、分鐘數(shù)值的變量?hour、minute,以及消息響應函數(shù)的聲明:


圖十八

在類實現(xiàn)文件 Screen1View.cpp 中,添加函數(shù)消息體:


圖十九

編譯運行一下,看看第一個 Screen 是否能正確顯示:


圖二十

用鼠標分別點擊小時和分鐘的增減箭頭按鈕,看看數(shù)值增減是否正確、24小時以及60分鐘越界后顯示是否正確。還好,小時和分鐘顯示都是正常的 ^_^ !

這個例子內(nèi)容稍多,只好拆成兩部分來講解,上半場先到這里,下半場請戳這里。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容