chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

實戰(zhàn)經(jīng)驗 | TouchGFX 控件附加 ClickListener 功能的方法介紹

STM32單片機 ? 來源:未知 ? 2023-11-17 17:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


關(guān)鍵詞:GUI,TouchGFX,Mixin,ClickListener


目錄預(yù)覽

1、引言

2、TouchGFX ClickListener 模板的使用

3、小結(jié)


01

引言


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


02

TouchGFX ClickListener 模板的使用


2.1. C++模板編程基礎(chǔ)


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


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


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


2.2. TouchGFX Mixin 功能簡介


模板一般分為函數(shù)模板和類模板。函數(shù)模板我們這里不做贅述,重點關(guān)注 TouchGFX Mixins 類模板。TouchGFX 的 Mixins 類模板用于拓展控件的功能,目前 TouchGFX v4.20.0 中有四個 Mixin 功能,分別是 Draggable、ClickListener、FadeAnimator 和MoveAnimator,分別為控件增添相關(guān)功能。如圖 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 創(chuàng)建工程。


圖2.TouchGFX Designer 生成 Button Example 例程


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


2.3.2. 為計數(shù)文本框控件添加 ClickListener 功能


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


圖3.TouchGFX Designer, 計數(shù)文本框 mixin ClickListener 功能


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



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



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


2.3.3. ClickListener 模板代碼


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



ClickListener 是一個標(biāo)準的類模板。所謂類模板,就是“包含一個或多個尚未確定類型”的類。必須將具體類型當(dāng)作模板參數(shù)傳入,才可使用。當(dāng)傳入模板參數(shù)后,該類模板便以你所指定的參數(shù)類型,由編譯器進行實例化。將具體類型傳入到類模板進行實例化,我們會得到一個新的 ClickListener 類,轉(zhuǎn)變?yōu)閺膫魅雲(yún)?shù)(某待定的類)的派生類。


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


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

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


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


2.3.4. ClickListener 模板應(yīng)用


我們清楚了 ClickListener 類模板的原理后,回頭來看例子中的 ClickListener 的應(yīng)用代碼,就會發(fā)現(xiàn)其邏輯十分清晰。


首先在 MainView.hpp 中聲明了一個 Callback txtClickedCallback, 和一個事件處理函數(shù) cntTextClickHandler。在 MainView.cpp 中初始化該 txtClickedCallback, 將其與cntTextClickHandler 關(guān)聯(lián),即實現(xiàn)當(dāng)調(diào)用該 Callback 時,會轉(zhuǎn)到 cntTextClickHandler 進行處理。


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


最后需要實現(xiàn) MainView 類中的 Click 事件處理函數(shù) cntTextClickHandler,這里的實現(xiàn)為:當(dāng) Click 事件類型為“Click 按鍵釋放”時調(diào)用 increaseValue 函數(shù)兩次。


03

小結(jié)


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




完整內(nèi)容請點擊“閱讀原文”下載原文檔。


原文標(biāo)題:實戰(zhàn)經(jīng)驗 | TouchGFX 控件附加 ClickListener 功能的方法介紹

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650537
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    365013

原文標(biāo)題:實戰(zhàn)經(jīng)驗 | TouchGFX 控件附加 ClickListener 功能的方法介紹

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    HarmonyOS實戰(zhàn):快速實現(xiàn)一個上下滾動的廣告控件

    上要想實現(xiàn)這樣的功能并不容易,那么在鴻蒙上怎么實現(xiàn)這樣的功能呢?本篇文章教你使用最簡單的方式實現(xiàn)一個支持上下滾動的廣告控件,建議點贊收藏!
    的頭像 發(fā)表于 06-24 17:05 ?142次閱讀

    遠程日志errDump調(diào)試功能實戰(zhàn)教程:案例驅(qū)動的故障排查!

    通過真實案例場景,本教程將展示如何利用遠程日志errDump調(diào)試功能定位系統(tǒng)崩潰、性能瓶頸等問題,從日志捕獲到原因分析,手把手帶您體驗實戰(zhàn)中的調(diào)試流程。 本文特別分享errDump功能
    的頭像 發(fā)表于 06-09 16:51 ?236次閱讀
    遠程日志errDump調(diào)試<b class='flag-5'>功能</b><b class='flag-5'>實戰(zhàn)</b>教程:案例驅(qū)動的故障排查!

    Linux開發(fā)板調(diào)屏方法,實戰(zhàn)經(jīng)驗讓您少走彎路

    本文介紹Linux系統(tǒng)調(diào)試屏幕過程中檢查屏幕狀態(tài)及信息的方法。如:驅(qū)動、屏幕連接、分辨率、色彩等狀態(tài)?;谟|覺智能RK3562開發(fā)板演示,搭載4核A53處理器,主頻高達2.0GHz;內(nèi)置獨立
    的頭像 發(fā)表于 06-06 18:13 ?219次閱讀
    Linux開發(fā)板調(diào)屏<b class='flag-5'>方法</b>,<b class='flag-5'>實戰(zhàn)經(jīng)驗</b>讓您少走彎路

    儲能EMC整改:如何節(jié)省70%整改費用的實戰(zhàn)方法

    深圳南柯電子|儲能EMC整改:如何節(jié)省70%整改費用的實戰(zhàn)方法
    的頭像 發(fā)表于 06-03 11:28 ?228次閱讀
    儲能EMC整改:如何節(jié)省70%整改費用的<b class='flag-5'>實戰(zhàn)</b><b class='flag-5'>方法</b>

    移動電源EMC整改:認證失敗到一次通過的實戰(zhàn)經(jīng)驗

    深圳南柯電子|移動電源EMC整改:認證失敗到一次通過的實戰(zhàn)經(jīng)驗
    的頭像 發(fā)表于 05-26 11:25 ?208次閱讀
    移動電源EMC整改:認證失敗到一次通過的<b class='flag-5'>實戰(zhàn)經(jīng)驗</b>

    高低頻介電常數(shù)測試儀實戰(zhàn)經(jīng)驗:從原理到場景全解析?

    作為電子發(fā)燒友,在探索材料介電特性時,經(jīng)常會遇到“頻率選擇” 的困惑:同樣的材料在高頻和低頻下測試結(jié)果為何差異顯著?不同頻率的測試儀又該如何選擇和操作?本文將結(jié)合實際經(jīng)驗,分享高低頻介電常數(shù)測試
    的頭像 發(fā)表于 04-30 13:20 ?419次閱讀
    高低頻介電常數(shù)測試儀<b class='flag-5'>實戰(zhàn)經(jīng)驗</b>:從原理到場景全解析?

    錫膏使用避坑指南:50 個實戰(zhàn)問答幫你解決 99% 的焊接難題(全流程解析)

    問題包含“原因分析 + 解決措施”,結(jié)合行業(yè)標(biāo)準與實戰(zhàn)經(jīng)驗,為電子工程師、產(chǎn)線技術(shù)人員、營銷工程師提供 “一站式” 缺陷解決方案,助力提升焊接良率與產(chǎn)品可靠性。了解完5
    的頭像 發(fā)表于 04-14 09:45 ?554次閱讀
    錫膏使用避坑指南:50 個<b class='flag-5'>實戰(zhàn)</b>問答幫你解決 99% 的焊接難題(全流程解析)

    請問TOUCHGFX中別人封裝好的控件容器可以直接使用嗎?

    TOUCHGFX中別人封裝好的控件容器可以直接使用嗎?
    發(fā)表于 03-13 08:15

    TouchGFX助力STM32打造高效GUI顯示方案

    TouchGFX 是一款針對 STM32 微控制器優(yōu)化的先進免費圖形軟件框架。 TouchGFX 利用 STM32 圖形功能和架構(gòu),通過創(chuàng)建令人驚嘆的類似智能手機的圖形用戶界面,加速了物聯(lián)網(wǎng) HMI 革命。
    的頭像 發(fā)表于 01-13 15:16 ?709次閱讀
    <b class='flag-5'>TouchGFX</b>助力STM32打造高效GUI顯示方案

    提升開關(guān)電源效率的理論分析與實戰(zhàn)經(jīng)驗

    在這里有電源技術(shù)干貨、電源行業(yè)發(fā)展趨勢分析、最新電源產(chǎn)品介紹、眾多電源達人與您分享電源技術(shù)經(jīng)驗,關(guān)注我們,與中國電源行業(yè)共成長! 提升開關(guān)電源效率的理論分析與實戰(zhàn)經(jīng)驗 引言 開關(guān)電源設(shè)計中,為獲得
    的頭像 發(fā)表于 01-09 10:04 ?1013次閱讀
    提升開關(guān)電源效率的理論分析與<b class='flag-5'>實戰(zhàn)經(jīng)驗</b>

    使用MCUXpresso for VS Code插件開發(fā)Zephyr的hello world

    本期來到Zephyr實戰(zhàn)經(jīng)驗演練,小編帶著大家一起使用MCUXpresso for VS Code插件來開發(fā)一個屬于Zephyr的hello world。
    的頭像 發(fā)表于 01-03 09:21 ?1261次閱讀
    使用MCUXpresso for VS Code插件開發(fā)Zephyr的hello world

    AWTK 最新動態(tài):支持瀏覽器控件

    導(dǎo)讀AWTK瀏覽器控件,基于webview項目實現(xiàn),將瀏覽器嵌入到AWTK應(yīng)用程序中,讓開發(fā)者可以方便的集成在線幫助和調(diào)用地圖等功能。awtk-widget-web-view是基于webview實現(xiàn)的AWTK瀏覽器控件,使得AW
    的頭像 發(fā)表于 11-20 01:05 ?655次閱讀
    AWTK 最新動態(tài):支持瀏覽器<b class='flag-5'>控件</b>

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

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

    在VirtualLab Fusion中的可編程探測器附加組件

    。 參數(shù) 源代碼 例 2:求和平方振幅 任務(wù)描述 為了實現(xiàn)更復(fù)雜的附加功能,我們接下來要計算輸入場的平方和振幅。該插件將自動檢測是否只有 E 場分量有效,并用一個參數(shù)用于確定插值方法。 與第一種情況類似
    發(fā)表于 08-08 17:17

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

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