在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

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


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


目錄預(yù)覽

1、引言

2、TouchGFX ClickListener 模板的使用

3、小結(jié)


01

引言


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


02

TouchGFX ClickListener 模板的使用


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


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


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


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


2.2. TouchGFX Mixin 功能簡(jiǎn)介


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


圖1. TouchGFX Designer Mixins 功能


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


2.3.1. TouchGFX 例程的代碼生成


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


圖2.TouchGFX Designer 生成 Button Example 例程


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


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


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


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


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



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



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


2.3.3. ClickListener 模板代碼


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



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


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


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

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


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


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


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


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


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


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


03

小結(jié)


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




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


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

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

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

    關(guān)注

    6039

    文章

    44583

    瀏覽量

    636494
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10910

    瀏覽量

    356604

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    圖片動(dòng)畫控件和Video image控件的使用方法

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

    【AWTK使用經(jīng)驗(yàn)】如何實(shí)現(xiàn)序列幀動(dòng)畫

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

    21年的實(shí)戰(zhàn)經(jīng)驗(yàn),得出最安全、快速、有效的變壓器漏油治理方法

    變壓器的滲漏是變壓器故障的常見問題,特別是一些運(yùn)行年限已久的變壓器更為普遍,輕者污染設(shè)備外表影響美觀,重者威脅設(shè)備安全運(yùn)行甚至人員生命,變壓器造成滲漏的原因主要有兩個(gè)方面:一方面是在變壓器設(shè)計(jì)及制造工藝過程中潛伏下來的;另一方面是由于變壓器的安裝和維護(hù)不當(dāng)引起的。根據(jù)運(yùn)行維修資料,變壓器最容易滲漏油的是散熱器、瓦斯繼電器、油閥門和油箱等處,嚴(yán)重的滲漏油也多半
    的頭像 發(fā)表于 06-17 13:39 ?465次閱讀
    21年的<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>,得出最安全、快速、有效的變壓器漏油治理<b class='flag-5'>方法</b>!

    TouchGFX 中 MCU 負(fù)載的計(jì)算過程介紹

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

    求助,關(guān)于STM32F103C8T6的CAN波特率偵測(cè)問題求解

    ,看不到方波。 如果直接用單片機(jī)直接捕獲不可實(shí)現(xiàn),請(qǐng)問哪些方法適合用單片機(jī)捕獲實(shí)現(xiàn)的?例如加一些外部電路等! 希望有高手能分享一些實(shí)戰(zhàn)經(jīng)驗(yàn),謝謝!
    發(fā)表于 05-09 08:29

    將程序通過touchgfx designer下載到開發(fā)板,無法實(shí)現(xiàn)觸摸功能怎么處理?

    用NUCLEO-G071RB和X-NUCLEO-GFX01M1做觸摸顯示實(shí)驗(yàn),希望點(diǎn)擊按鈕能跳轉(zhuǎn)到相關(guān)界面,在touchgfx designer模擬仿真可以實(shí)現(xiàn),但是將程序通過touchgfx
    發(fā)表于 03-25 06:33

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

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

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

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

    touchgfx如何改變圖片顏色?

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

    STM32H5 DA證書鏈實(shí)戰(zhàn)經(jīng)驗(yàn)

    之前我們已經(jīng)講過了如何通過 DA 認(rèn)證來回退芯片產(chǎn)品狀態(tài),或者重新打開調(diào)試口,這樣開發(fā)人員在芯片為 Closed 狀態(tài)下時(shí)仍可以調(diào)試芯片。
    的頭像 發(fā)表于 03-12 14:08 ?1137次閱讀
    STM32H5 DA證書鏈<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>

    盤點(diǎn)那些硬件+項(xiàng)目學(xué)習(xí)套件:STM32U5單片機(jī)開發(fā)板及入門常見問題解答

    實(shí)際項(xiàng)目中,提升編程水平和功能實(shí)現(xiàn)能力,磨練自己的技能并豐富經(jīng)驗(yàn)。 3. 按照上面項(xiàng)目導(dǎo)向式的學(xué)習(xí)方法,先完成STM32外設(shè)基礎(chǔ)知識(shí)入門+實(shí)驗(yàn)應(yīng)用+綜合性項(xiàng)目實(shí)戰(zhàn),然后再拓展更多知識(shí)點(diǎn)
    發(fā)表于 02-19 16:59

    基本絕緣和附加絕緣介紹

    基本絕緣和附加絕緣是電氣設(shè)備中兩種重要的絕緣方式,它們?cè)诒WC電氣設(shè)備安全運(yùn)行和人身安全方面起著至關(guān)重要的作用。本文將對(duì)基本絕緣和附加絕緣進(jìn)行詳細(xì)介紹。 一、基本絕緣 基本絕緣是指電氣設(shè)備中直接與帶電
    的頭像 發(fā)表于 02-16 11:55 ?2917次閱讀
    基本絕緣和<b class='flag-5'>附加</b>絕緣<b class='flag-5'>介紹</b>
    主站蜘蛛池模板: 日本不卡专区| 国产精品久久久久久久9999| 三级特黄视频| 性xxxx欧美| 乱人伦一区二区三区| 在线免费观看视频黄| 国产三级香港三级人妇| 你懂得在线网址| 日韩欧美不卡片| 天堂中文资源网| 中文字幕不卡在线播放| 日本aaaaa| 午夜男人视频| 中文字字幕码一二区| 欧美爆操| 4438x亚洲最大| 国内精品久久久久久久久野战 | 400部大量精品情侣网站| 55夜色66夜色国产精品站| 精品一区二区三区在线视频| 亚洲一区二区视频| 中文字幕亚洲一区婷婷| 19xxxxxxxxx日本69| 九九热精品视频| 天堂影| 久久青草视频| 国产在线高清精品二区色五郎| 久久天堂网| 夜夜狠操| 天天摸夜班摸天天碰| 天天操夜夜草| 手机在线视频你懂的| 天天爽夜夜爽夜夜爽精品视频| 午夜视频在线播放| 天天干天天插天天| 2021久久精品免费观看| 久久国产99| 青青草国产三级精品三级| 免费国产一区二区三区| 免费看片aⅴ免费大片| www.三级.com|