色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

實戰經驗 | TouchGFX 控件附加 ClickListener 功能的方法介紹

STM32單片機 ? 來源:未知 ? 2023-11-17 17:40 ? 次閱讀


關鍵詞:GUI,TouchGFX,Mixin,ClickListener


目錄預覽

1、引言

2、TouchGFX ClickListener 模板的使用

3、小結


01

引言


TouchGFX 是專用于 STM32 的圖形界面設計軟件,可用來低成本開發優秀的圖形界面,TouchGFX 現已變的越來越流行。為了幫助客戶更加深入地理解和使用 TouchGFX ,本文介紹了 TouchGFX Designer 中的 Mixin 功能,從基礎示例 Button Example 出發,為文本框控件添加 ClickListener (Mixin 功能中的一項),并對源代碼進行簡單剖析。期望能幫助客戶更深入地理解 STM32 TouchGFX 的相關功能。


02

TouchGFX ClickListener 模板的使用


2.1. C++模板編程基礎


在示例介紹之前,讓我們先熟悉一下 C++模板編程的一些基礎知識。模板編程屬于通用編程的范疇,是為“尚未確定類型”所寫的函數或類。是可以產生更干凈、更快速、更精明的軟件的一個強力手段。


模板的優點:首先模板與某種特定類型無關,代碼可重用性好;其次模板與平臺無關,代碼移植性好;另外模板代碼在編譯時才進行解釋,在編譯時確定檢查數據類型,相比運行時檢查,類型的安全性高。


模板的缺點:一是代碼易讀性不是很好,調試不便;二是用戶工程代碼中需要包含模板代碼(非二進制庫),編譯的時間較長,二進制擴展性差;另外有可能會造成二進制代碼膨脹(編譯后二進制代碼臃腫),我們在設計模板時,需要盡可能將 C++模板中與參數?關的代碼分離出來。


2.2. TouchGFX Mixin 功能簡介


模板一般分為函數模板和類模板。函數模板我們這里不做贅述,重點關注 TouchGFX Mixins 類模板。TouchGFX 的 Mixins 類模板用于拓展控件的功能,目前 TouchGFX v4.20.0 中有四個 Mixin 功能,分別是 Draggable、ClickListener、FadeAnimator 和MoveAnimator,分別為控件增添相關功能。如圖 1 (TouchGFX Designer Mixins 功能)所示,本文主要針對 ClickListener 做具體介紹。


圖1. TouchGFX Designer Mixins 功能


2.3. 基于 TouchGFX Button 例程使用 ClickListener 功能


2.3.1. TouchGFX 例程的代碼生成


運行 TouchGFX Designer,選擇 Examples;通過 Select Board Setup 選擇STM32H735G DK 板;從眾多例程中選擇“Button Example”例程;將 Application name 改為 Button_Example,如下圖圖 2,然后點擊 Create 創建工程。


圖2.TouchGFX Designer 生成 Button Example 例程


進入 TouchGFX Designer 主界面后,會看到畫布上有兩個按鈕和一個文本框,我們對界面不做更改,直接選擇 Designer 右下角 (Run Target)生成代碼。該操作將會復制TouchGFX 框架文件,生成配置文件、makefile、代碼及資源文件(images、fonts、texts),然后編譯鏈接、燒錄目標板并運行。程序運行起來后,您可以熟悉一下該按鈕例程應用。下面我們就針對該例程,為界面上的計數文本框控件注入 ClickListener 功能,應用實現“當點擊計數文本框時,計數數字增加 2”的功能。


2.3.2. 為計數文本框控件添加 ClickListener 功能


我們在 TouchGFX Designer 主屏界面,點擊 countTxt 文本框,然后在右側屬性欄中找到 Mixins,勾選 ClickListener,如圖 3 所示。然后重新生成代碼。


圖3.TouchGFX Designer, 計數文本框 mixin ClickListener 功能


我們可以使用 VS code 編輯代碼,或使用其它如 STM32CubeIDE 等工具編輯代碼。打開 MainView.hpp,為計數文本框,添加代碼如下(黃底色部分):



然后我們轉到 MainView.cpp 文件,首先將 txtClickedCallback 對象與 MainView的 cntTextClickHandler(文本框點擊處理函數)綁定,這是在 MainView 類的構造函數中初始化列表中實現的。將 txtClickedCallback 加入初始化列表中,參數使用指向MainView 中 cntTextClickHandler 函數的函數指針。我們還需要修改 setupScreen 函數,在這里為 countTxt 添加 ClickAction,參數使用 txtClickedCallback, 以實現在主屏界面創建時,將 countTxt 文本框的點擊事件與 txtClickedCallback 對象綁定在一起。另外我們還需要實現 cntTextClickHandler,具體代碼如下:



修改完成后,保存,編譯,運行。您將會發現當每次點擊 countTxt 文本框時,文本框計數會增加 2。至此,我們已經實現了為文本框控件加入 ClickListener 的功能。大家可以看到,在 TouchGFX 應用中使用 ClickListener 類模板做開發是十分便捷的,代碼量也較小。下面我們對代碼進一步解讀。


2.3.3. ClickListener 模板代碼


ClickListener 類模板是 TouchGFX 框架的一部分,封裝在 ClickListener.hpp 中,代碼如下:



ClickListener 是一個標準的類模板。所謂類模板,就是“包含一個或多個尚未確定類型”的類。必須將具體類型當作模板參數傳入,才可使用。當傳入模板參數后,該類模板便以你所指定的參數類型,由編譯器進行實例化。將具體類型傳入到類模板進行實例化,我們會得到一個新的 ClickListener 類,轉變為從傳入參數(某待定的類)的派生類。


在生成的代碼 MainViewBase.hpp 中(MainView 是 MainViewBase 的派生類),我們可以找到 countTxt 的聲明:


touchgfx::ClickListener< touchgfx::TextAreaWithOneWildcard > countTxt;

這里,該模板示例類是從 TextAreaWithOneWildcard 類(即原計數文本框類型)繼承下來的。如果您選擇的不是為文本框增加 ClickListener 功能,而是其它控件,則新的ClickListener 實例類將派生自您所用的控件。本例中的繼承關系如下:


該 ClickListener 實例類是 TextAreaWithOneWildcard 類的派生類,不僅僅繼承了TextAreaWithOneWildcard 的屬性與方法,另外還添加了一個 GenericCallback 指針變量clickAction,該指針由附加的 setClickAction 方法賦值。由另一個方法 handleClickEvent使用,在 handleClickEvent 中在響應 Click 事件時,會調用該 clickAction。(關于callback 類的使用,我們這里不做贅述,如果您需要進一步了解,請參考 TouchGFX 相關文檔)。


2.3.4. ClickListener 模板應用


我們清楚了 ClickListener 類模板的原理后,回頭來看例子中的 ClickListener 的應用代碼,就會發現其邏輯十分清晰。


首先在 MainView.hpp 中聲明了一個 Callback txtClickedCallback, 和一個事件處理函數 cntTextClickHandler。在 MainView.cpp 中初始化該 txtClickedCallback, 將其與cntTextClickHandler 關聯,即實現當調用該 Callback 時,會轉到 cntTextClickHandler 進行處理。


再在 setupScreen 函數中調用 ClickListener 類模板接口 setClickAction 將txtClickedCallback 的地址賦給 ClickListener 實例化類的 clickAction 指針。則ClickListener 實例化類(這里即 TextAreaWithOneWildcard 類的派生類)在處理ClickEvent 時就會執行到 txtClickedCallback 關聯的處理函數 cntTextClickHandler


最后需要實現 MainView 類中的 Click 事件處理函數 cntTextClickHandler,這里的實現為:當 Click 事件類型為“Click 按鍵釋放”時調用 increaseValue 函數兩次。


03

小結


TouchGFX 是 STM32 專用的界面設計工具,功能強大且易用。本文選擇了 Mixins 功能進行簡介,從基礎示例 Button Example 出發,動手添加 ClickListener (Mixin) 功能,并從源代碼的角度淺析了 ClickListener 類模板的使用,助力客戶更深入地理解 STM32 TouchGFX。




完整內容請點擊“閱讀原文”下載原文檔。


原文標題:實戰經驗 | TouchGFX 控件附加 ClickListener 功能的方法介紹

文章出處:【微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634675
  • STM32
    +關注

    關注

    2270

    文章

    10895

    瀏覽量

    355752

原文標題:實戰經驗 | TouchGFX 控件附加 ClickListener 功能的方法介紹

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【全新課程資料】正點原子《基于GD32 ARM32單片機項目實戰入門》培訓課程資料上線!

    ,提高編程能力和實戰經驗 四、適合人群 (1)單片機編程初學者 (2)電子工程師 (3)對ARM32單片機有興趣的技術愛好者 五、課程詳細介紹 1、培訓課程包含: (1)全套培訓課程視頻(已全部錄制
    發表于 09-24 18:06

    圖片動畫控件和Video image控件的使用方法

    在UI開發過程中,序列幀基本是繞不開的,AWTK 支持多種方法實現序列幀顯示,本文介紹圖片動畫控件和Video image控件的使用方法
    的頭像 發表于 08-06 16:44 ?861次閱讀
    圖片動畫<b class='flag-5'>控件</b>和Video image<b class='flag-5'>控件</b>的使用<b class='flag-5'>方法</b>

    【AWTK使用經驗】如何實現序列幀動畫

    目前想在AWTK中顯示炫酷流暢的圖片動畫,此時可以用video_image控件來播放序列幀動畫。本篇文章將介紹控件的原理和使用方法。圖1ZTP800示教器運行v
    的頭像 發表于 07-18 08:25 ?415次閱讀
    【AWTK使用<b class='flag-5'>經驗</b>】如何實現序列幀動畫

    TouchGFX 中 MCU 負載的計算過程介紹

    TouchGFX Desinger 下載的 TBS(TouchGFX Board Setup)大都帶有 MCU 的 負載計算功能,那么如何在自己的板子上增加 MCU 負載計算功能
    的頭像 發表于 05-24 13:24 ?476次閱讀
    <b class='flag-5'>TouchGFX</b> 中 MCU 負載的計算過程<b class='flag-5'>介紹</b>

    touchgfx swipeContainer控件加入ScrollableContainer控件;SwipeContainer空間就用不了是哪里的問題?

    touchgfx 問題 :swipeContainer控件加入ScrollableContainer控件;SwipeContainer空間就用不了了,只能執行S
    發表于 03-22 11:48

    TouchGFX怎樣任意修改控件大小?

    TouchGFX怎樣任意修改控件大小,而不是只能選擇固定的大小?
    發表于 03-18 07:17

    touchgfx如何改變圖片顏色?

    touchgfx是否有提供函數可以直接改變image控件中圖片的顏色,類似LVGL中圖片控件的recolor函數,對圖片重新著色成某種純色圖片,如果touchgfx沒有這種函數,是否有
    發表于 03-15 06:24

    STM32H5 DA證書鏈實戰經驗

    之前我們已經講過了如何通過 DA 認證來回退芯片產品狀態,或者重新打開調試口,這樣開發人員在芯片為 Closed 狀態下時仍可以調試芯片。
    的頭像 發表于 03-12 14:08 ?1074次閱讀
    STM32H5 DA證書鏈<b class='flag-5'>實戰經驗</b>

    基本絕緣和附加絕緣介紹

    基本絕緣和附加絕緣是電氣設備中兩種重要的絕緣方式,它們在保證電氣設備安全運行和人身安全方面起著至關重要的作用。本文將對基本絕緣和附加絕緣進行詳細介紹。 一、基本絕緣 基本絕緣是指電氣設備中直接與帶電
    的頭像 發表于 02-16 11:55 ?2761次閱讀
    基本絕緣和<b class='flag-5'>附加</b>絕緣<b class='flag-5'>介紹</b>

    LabVIEW Tab選項卡控件XTab的使用方法

    選項卡控件是在界面開發中常常使用到的控件,通過多選項卡布局,將UI顯示內容獨立分為多個功能模塊或者視圖,用戶可以通過單擊選項卡來切換到所需的功能視圖。
    的頭像 發表于 01-02 09:24 ?2247次閱讀
    LabVIEW Tab選項卡<b class='flag-5'>控件</b>XTab的使用<b class='flag-5'>方法</b>

    基于TouchGFX的智能手表設計(4)

    電子發燒友網站提供《基于TouchGFX的智能手表設計(4).pdf》資料免費下載
    發表于 12-29 17:31 ?5次下載

    基于TouchGFX的智能手表設計(3)

    電子發燒友網站提供《基于TouchGFX的智能手表設計(3).pdf》資料免費下載
    發表于 12-29 17:30 ?7次下載

    基于TouchGFX的智能手表設計(2)

    電子發燒友網站提供《基于TouchGFX的智能手表設計(2).pdf》資料免費下載
    發表于 12-29 17:29 ?5次下載

    基于TouchGFX的智能手表設計(1)

    電子發燒友網站提供《基于TouchGFX的智能手表設計(1).pdf》資料免費下載
    發表于 12-29 17:28 ?6次下載

    實戰經驗 | 如何在用戶應用中開啟 LoRa CAD

    STM32WL LoRa 發送數據,或做相應的操作。為了降低功耗,STM32WL不能一直處于接收狀態,這樣功耗會很高。我們可以開啟 LoRa CAD(信道活動檢測)功能,STM32WL 通過開啟 CAD 功能,檢測前導碼的前 1/
    的頭像 發表于 12-26 17:45 ?1533次閱讀
    <b class='flag-5'>實戰經驗</b> | 如何在用戶應用中開啟 LoRa CAD
    主站蜘蛛池模板: 久久精品综合电影| 人与畜禽CROPROATION免费| 色久天| 中国人泡妞www免费| 国产成人精品电影在线观看| 快播av网址| 亚洲精品无码成人AAA片| www在线小视频免费| 久久久久免费视频| 午夜一个人在线观看完整版| 边做边爱播放3免费观看| 榴莲黄版无限刷| 亚洲免费网站观看视频| 国产传媒18精品A片在线观看 | 久久精品国产在热亚洲| 无码99久热只有精品视频在线| caoporn超碰在线| 久久精品国产午夜伦班片| 亚洲 日韩 国产 制服 在线| 国产 亚洲 中文字幕 在线| 欧美成人无码A区在线观看免费| 友田真希息与子中文字幕| 国产在线一区二区三区四区| 四虎影院网红美女| 办公室日本肉丝OL在线| 男生J桶进女人P又色又爽又黄| 真人做受120分钟免费看| 精品高潮呻吟99AV无码视频| 小sao货水好多真紧h的视频| 二次元美女扒开内裤喷水| 青娱乐国产精品视频| lesbabes性欧美| 女同给老师下媚药| 97超碰97资源在线观看视频| 老师我好爽再深一点老师好涨| 一本道的mv中文字幕| 精品视频在线播放| 亚洲最大成人| 精品无码无人网站免费视频 | 大肚婆孕妇网| 青青草A在在观免费线观看|