日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(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ī) ? 來(lái)源:未知 ? 2023-11-17 17:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


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


目錄預(yù)覽

1、引言

2、TouchGFX ClickListener 模板的使用

3、小結(jié)


01

引言


TouchGFX 是專(zhuān)用于 STM32 的圖形界面設(shè)計(jì)軟件,可用來(lái)低成本開(kāi)發(fā)優(yōu)秀的圖形界面,TouchGFX 現(xiàn)已變的越來(lái)越流行。為了幫助客戶更加深入地理解和使用 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í)。模板編程屬于通用編程的范疇,是為“尚未確定類(lèi)型”所寫(xiě)的函數(shù)或類(lèi)。是可以產(chǎn)生更干凈、更快速、更精明的軟件的一個(gè)強(qiáng)力手段。


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


模板的缺點(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)的代碼分離出來(lái)。


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


模板一般分為函數(shù)模板和類(lèi)模板。函數(shù)模板我們這里不做贅述,重點(diǎn)關(guān)注 TouchGFX Mixins 類(lèi)模板。TouchGFX 的 Mixins 類(lèi)模板用于拓展控件的功能,目前 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;通過(guò) 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ì)看到畫(huà)布上有兩個(gè)按鈕和一個(gè)文本框,我們對(duì)界面不做更改,直接選擇 Designer 右下角 (Run Target)生成代碼。該操作將會(huì)復(fù)制TouchGFX 框架文件,生成配置文件、makefile、代碼及資源文件(images、fonts、texts),然后編譯鏈接、燒錄目標(biāo)板并運(yùn)行。程序運(yùn)行起來(lái)后,您可以熟悉一下該按鈕例程應(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 等工具編輯代碼。打開(kāi) MainView.hpp,為計(jì)數(shù)文本框,添加代碼如下(黃底色部分):



然后我們轉(zhuǎn)到 MainView.cpp 文件,首先將 txtClickedCallback 對(duì)象與 MainView的 cntTextClickHandler(文本框點(diǎn)擊處理函數(shù))綁定,這是在 MainView 類(lèi)的構(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 類(lèi)模板做開(kāi)發(fā)是十分便捷的,代碼量也較小。下面我們對(duì)代碼進(jìn)一步解讀。


2.3.3. ClickListener 模板代碼


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



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


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


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

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


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


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


我們清楚了 ClickListener 類(lèi)模板的原理后,回頭來(lái)看例子中的 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 類(lèi)模板接口 setClickAction 將txtClickedCallback 的地址賦給 ClickListener 實(shí)例化類(lèi)的 clickAction 指針。則ClickListener 實(shí)例化類(lèi)(這里即 TextAreaWithOneWildcard 類(lèi)的派生類(lèi))在處理ClickEvent 時(shí)就會(huì)執(zhí)行到 txtClickedCallback 關(guān)聯(lián)的處理函數(shù) cntTextClickHandler


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


03

小結(jié)


TouchGFX 是 STM32 專(zhuān)用的界面設(shè)計(jì)工具,功能強(qiáng)大且易用。本文選擇了 Mixins 功能進(jìn)行簡(jiǎn)介,從基礎(chǔ)示例 Button Example 出發(fā),動(dòng)手添加 ClickListener (Mixin) 功能,并從源代碼的角度淺析了 ClickListener 類(lèi)模板的使用,助力客戶更深入地理解 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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6078

    文章

    45591

    瀏覽量

    673971
  • STM32
    +關(guān)注

    關(guān)注

    2313

    文章

    11195

    瀏覽量

    374751

原文標(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)推薦
    熱點(diǎn)推薦

    經(jīng)驗(yàn)貼 8:AP4054 芯片介紹 + 高溫環(huán)境降額使用與熱穩(wěn)定性經(jīng)驗(yàn)

    自帶熱保護(hù),但 高溫環(huán)境下不建議長(zhǎng)期滿負(fù)荷 500mA 運(yùn)行 。在密閉外殼、戶外高溫、散熱條件差的場(chǎng)景中,滿負(fù)荷工作會(huì)讓芯片持續(xù)高溫,雖不會(huì)立即損壞,但會(huì)加速老化并影響充電效率。我的實(shí)戰(zhàn)經(jīng)驗(yàn)是:高溫
    發(fā)表于 04-21 09:00

    EMI整改實(shí)戰(zhàn)經(jīng)驗(yàn)總結(jié)

    搞硬件的工程師最怕啥?產(chǎn)品做出來(lái)了,測(cè)試的時(shí)候EMI超標(biāo),一整改起來(lái)沒(méi)完沒(méi)了。我見(jiàn)過(guò)太多項(xiàng)目因?yàn)镋MI問(wèn)題延期交貨,改板改到懷疑人生。其實(shí)EMI整改沒(méi)大家想得那么復(fù)雜,濾波和接地就是最實(shí)用、最直接的兩把利劍。搞懂這兩個(gè),你的整改效率至少翻倍。
    的頭像 發(fā)表于 04-20 10:20 ?1171次閱讀
    EMI整改<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>總結(jié)

    工業(yè) AI Agent 為什么能真正落地工廠?研華六大場(chǎng)景實(shí)戰(zhàn)經(jīng)驗(yàn)分享

    經(jīng)驗(yàn)傳承到?jīng)Q策優(yōu)化,從設(shè)備維護(hù)到供應(yīng)鏈協(xié)同,研華iFactory.AI Agent的六大落地案例充分證明,工業(yè)AI Agent并非懸浮的技術(shù)概念,而是能深度適配制造業(yè)生產(chǎn)經(jīng)營(yíng)全鏈路、精準(zhǔn)破解核心痛點(diǎn)的實(shí)用工具。
    的頭像 發(fā)表于 03-12 16:58 ?434次閱讀

    GPS時(shí)鐘授時(shí)裝置常見(jiàn)問(wèn)題與實(shí)戰(zhàn)經(jīng)驗(yàn)分享

    作為一名長(zhǎng)期關(guān)注時(shí)間同步技術(shù)的網(wǎng)絡(luò)宣傳人員,我經(jīng)常收到用戶關(guān)于GPS時(shí)鐘授時(shí)裝置的各種咨詢。從電力變電站到5G網(wǎng)絡(luò)機(jī)房,從自動(dòng)駕駛測(cè)試場(chǎng)到金融數(shù)據(jù)中心,這些設(shè)備默默守護(hù)著現(xiàn)代社會(huì)的精密運(yùn)轉(zhuǎn)。今天,我想結(jié)合行業(yè)內(nèi)的技術(shù)發(fā)展和實(shí)際應(yīng)用中的經(jīng)驗(yàn),和大家聊聊GPS時(shí)鐘授時(shí)裝置那些事兒。
    的頭像 發(fā)表于 03-06 11:03 ?240次閱讀
    GPS時(shí)鐘授時(shí)裝置常見(jiàn)問(wèn)題與<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>分享

    智能檢測(cè)賦能品質(zhì)升級(jí) ——Type-C 接口涂膠缺陷檢測(cè)方案破解行業(yè)痛點(diǎn)

    今天介紹的落地案例中,將針對(duì)Type-C 接口涂膠過(guò)程中出現(xiàn)的缺陷檢測(cè)痛點(diǎn),結(jié)合成熟落地的實(shí)戰(zhàn)經(jīng)驗(yàn),為您提供視覺(jué)智能化升級(jí)的參考范例。
    的頭像 發(fā)表于 12-26 15:14 ?352次閱讀

    智能破局焊接痛點(diǎn)!連接器 PIN 腳零缺陷檢測(cè)方案,3C &amp; 汽車(chē)電子質(zhì)控利器

    本期我們將聚焦 連接器 PIN 腳焊接環(huán)節(jié)的質(zhì)量管控難點(diǎn),結(jié)合近期成功交付的實(shí)戰(zhàn)經(jīng)驗(yàn),詳細(xì)解讀智能視覺(jué)檢測(cè)方案的落地實(shí)踐經(jīng)驗(yàn),為您提供視覺(jué)智能化升級(jí)的參考范例。
    的頭像 發(fā)表于 12-08 15:14 ?569次閱讀

    車(chē)載音頻功放芯片實(shí)戰(zhàn)經(jīng)驗(yàn)與深度疑問(wèn)

    1. 通道配置與車(chē)型需求的適配經(jīng)驗(yàn) 在為不同車(chē)型設(shè)計(jì)音響系統(tǒng)時(shí),CD7377CZ 與 CD7388 的通道配置需緊密結(jié)合車(chē)型空間與用戶需求。例如,針對(duì)緊湊型家用轎車(chē),車(chē)內(nèi)空間較小,采用
    發(fā)表于 12-05 09:53

    解鎖物聯(lián)網(wǎng)攝像頭潛力:低成本低功耗硬件設(shè)計(jì)實(shí)戰(zhàn)技巧!

    攝像頭是物聯(lián)網(wǎng)視覺(jué)感知的關(guān)鍵,但高成本與高功耗常成落地阻礙。本文基于實(shí)戰(zhàn)經(jīng)驗(yàn),提煉硬件設(shè)計(jì)實(shí)用技巧——從簡(jiǎn)化外圍電路到動(dòng)態(tài)功耗管理,助您以更低成本、更低功耗打造物聯(lián)網(wǎng)攝像頭,適配智能家居、安防監(jiān)控等場(chǎng)景。
    的頭像 發(fā)表于 09-20 15:22 ?1450次閱讀
    解鎖物聯(lián)網(wǎng)攝像頭潛力:低成本低功耗硬件設(shè)計(jì)<b class='flag-5'>實(shí)戰(zhàn)</b>技巧!

    數(shù)據(jù)庫(kù)慢查詢分析與SQL優(yōu)化實(shí)戰(zhàn)技巧

    今天,我將分享我在處理數(shù)千次數(shù)據(jù)庫(kù)性能問(wèn)題中積累的實(shí)戰(zhàn)經(jīng)驗(yàn),幫助你系統(tǒng)掌握慢查詢分析與SQL優(yōu)化的核心技巧。無(wú)論你是剛?cè)腴T(mén)的運(yùn)維新手,還是有一定經(jīng)驗(yàn)的工程師,這篇文章都將為你提供實(shí)用的解決方案。
    的頭像 發(fā)表于 09-08 09:34 ?1273次閱讀

    Linux服務(wù)器性能調(diào)優(yōu)的核心技巧和實(shí)戰(zhàn)經(jīng)驗(yàn)

    如果你正在為這些問(wèn)題頭疼,那么這篇文章就是為你準(zhǔn)備的!作為一名擁有10年經(jīng)驗(yàn)的運(yùn)維工程師,我將毫無(wú)保留地分享Linux服務(wù)器性能調(diào)優(yōu)的核心技巧和實(shí)戰(zhàn)經(jīng)驗(yàn)。
    的頭像 發(fā)表于 08-27 14:36 ?1238次閱讀

    touchgfx4.25顏色錯(cuò)誤是什么原因?qū)е碌?

    touchgfx4.25顏色錯(cuò)誤 .紫色顯示成了藍(lán)色. 使用rgb888或者rgb565模式都試過(guò)結(jié)果一樣.后方的紅綠藍(lán)紫是svg圖片.非box控件的顏色.
    發(fā)表于 08-14 06:21

    HarmonyOS實(shí)戰(zhàn):快速實(shí)現(xiàn)一個(gè)上下滾動(dòng)的廣告控件

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

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

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

    儲(chǔ)能EMC整改:如何節(jié)省70%整改費(fèi)用的實(shí)戰(zhàn)方法

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

    移動(dòng)電源EMC整改:認(rèn)證失敗到一次通過(guò)的實(shí)戰(zhàn)經(jīng)驗(yàn)

    深圳南柯電子|移動(dòng)電源EMC整改:認(rèn)證失敗到一次通過(guò)的實(shí)戰(zhàn)經(jīng)驗(yàn)
    的頭像 發(fā)表于 05-26 11:25 ?1115次閱讀
    移動(dòng)電源EMC整改:認(rèn)證失敗到一次通過(guò)的<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>
    昭平县| 梁河县| 逊克县| 安塞县| 林州市| 阳谷县| 沾化县| 荆州市| 连江县| 灵宝市| 梓潼县| 米脂县| 嵩明县| 兴安县| 长沙县| 东海县| 西贡区| 思茅市| 噶尔县| 济宁市| 湘乡市| 宝丰县| 丰顺县| 宁明县| 乾安县| 仪征市| 铜陵市| 图木舒克市| 六盘水市| 赤水市| 宁阳县| 太康县| 莲花县| 若尔盖县| 金坛市| 奉节县| 拜泉县| 仪征市| 昌吉市| 宿迁市| 娱乐|