你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

TouchGFX 控件附加Mixin功能的方法介绍

[复制链接]
STMCU小助手 发布时间:2023-2-14 18:54
1. 引言TouchGFX 是专用于 STM32 的图形界面设计软件,可用来低成本开发优秀的图形界面,TouchGFX 现已变的越来越流行。为了帮助客户更加深入地理解和使用 TouchGFX ,本文介绍了 TouchGFX Designer 中的 Mixin 功能,从基础示例 Button Example 出发,为文本框控件添加 ClickListener (Mixin 功能中的一项),并对源代码进行简单剖析。期望能帮助客户更深入地理解 STM32 TouchGFX 的相关功能。
5 a( s( ]$ P( H9 t& |# J) V$ z& ]7 Y- V. a2 T+ }$ T6 e- g+ W1 I
) K& u. E" ?( U
2. TouchGFX ClickListener 模板的使用
* J6 ]" g8 {8 B  R5 l6 P5 w: j2.1. C++模板编程基础
. o0 V1 d; e; {. u5 r9 k* r( I在示例介绍之前,让我们先熟悉一下 C++模板编程的一些基础知识。模板编程属于通用编程的范畴,是为“尚未确定类型”所写的函数或类。是可以产生更干净、更快速、更精明的软件的一个强力手段。
8 k9 l; u# h+ v模板的优点:首先模板与某种特定类型无关,代码可重用性好;其次模板与平台无关,代码移植性好;另外模板代码在编译时才进行解释,在编译时确定检查数据类型,相比运行时检查,类型的安全性高。# T! P+ O" _" k- ]4 E6 @+ y
模板的缺点:一是代码易读性不是很好,调试不便;二是用户工程代码中需要包含模板代码(非二进制库),编译的时间较长,二进制扩展性差;另外有可能会造成二进制代码膨胀(编译后二进制代码臃肿),我们在设计模板时,需要尽可能将 C++模板中与参数⽆关的代码分离出来。
0 X4 d% W  ^' D# h& c+ K* O2 `# V; c, y( U6 `" a

! w' K- \* ~# \! O$ ?/ t2.2. TouchGFX Mixin 功能简介) o7 W: v4 N$ A
模板一般分为函数模板和类模板。函数模板我们这里不做赘述,重点关注 TouchGFX Mixins 类模板。TouchGFX 的 Mixins 类模板用于拓展控件的功能,目前 TouchGFX v4.20.0 中有四个 Mixin 功能,分别是 Draggable、ClickListener、FadeAnimator 和MoveAnimator,分别为控件增添相关功能。如图 1 (TouchGFX Designer Mixins 功能)所示,本文主要针对 ClickListener 做具体介绍。
/ t/ p/ R5 u% M9 G5 d6 h. J! K) F3 N1 R6 U' R) A& S* ]5 e

3 s( v: L' _1 v9 E/ S7 W" s1 X, D 5J}[`OW7ITXJVSXDH[K]ER3.png * O7 A! G! O3 h9 i0 \6 ?9 D# X
' {. T" Z, Y3 j" B; D
+ A8 W& C' b: o) [( m0 K
8 _9 u% }" a8 a
5 t" I' m" y  {; l' ?6 c
2.3. 基于 TouchGFX Button 例程使用 ClickListener 功能
  V6 E  ]# G& k% [1 Y2.3.1. TouchGFX 例程的代码生成1 Y* Q! P/ e0 B. }) o8 @: Q  W
运行 TouchGFX Designer,选择 Examples;通过 Select Board Setup 选择STM32H735G DK 板;从众多例程中选择“Button Example”例程;将 Application name 改为 Button_Example,如下图图 2,然后点击 Create 创建工程。
- X# Y/ H* p% X1 U* C/ R; ~- Y  l6 F' A) H4 |" j
2 {' K# R0 [0 n- |
K])F6}G}MDTRSJF$`NB~8@5.png
3 d8 q  u/ x" B* W 进入 TouchGFX Designer 主界面后,会看到画布上有两个按钮和一个文本框,我们对界面不做更改,直接选择 Designer 右下角 (Run Target)生成代码。该操作将会复制TouchGFX 框架文件,生成配置文件、makefile、代码及资源文件(images、fonts、texts),然后编译链接、烧录目标板并运行。程序运行起来后,您可以熟悉一下该按钮例程应用。下面我们就针对该例程,为界面上的计数文本框控件注入 ClickListener 功能,应用实现“当点击计数文本框时,计数数字增加 2”的功能。
( a: T7 G/ f- c9 [: U- f6 B
* I7 f& K" k, k% a
2 N9 F- e/ @* V% n  G: d& @+ y
2.3.2. 为计数文本框控件添加 ClickListener 功能
# S5 ?$ `* {) y我们在 TouchGFX Designer 主屏界面,点击 countTxt 文本框,然后在右侧属性栏中找到 Mixins,勾选 ClickListener,如图 3 所示。然后重新生成代码。) o! x; B; D& K* V- I% y5 @& G8 S1 }
0 m& G" Z! ?0 j' z
  ~" w; ^: L8 v$ I3 j
N@DFIVBVB[07KWKXA]6XA4E.png ; ~6 C, d- y) M7 K: o
& x# V& f& N! s0 I0 f

# u3 a  `# e0 k$ z: y0 D4 \, q/ G我们可以使用 VS code 编辑代码,或使用其它如 STM32CubeIDE 等工具编辑代码。打开 MainView.hpp,为计数文本框,添加代码如下(黄底色部分):, y3 }2 L/ S4 U( D3 {. q' E! K
  1. #ifndef MAIN_VIEW_HPP1 b5 u  R4 D/ x$ [
  2. #define MAIN_VIEW_HPP- K; Z4 M# g2 I* B* Y1 \0 K
  3. #include <gui_generated/main_screen/MainViewBase.hpp>) M. O$ `1 \3 z9 r
  4. #include <gui/main_screen/MainPresenter.hpp>( q9 m" g* w8 {& a2 v
  5. class MainView : public MainViewBase, V: i4 v. Z- \# a
  6. {# [4 `# d" I/ }4 d
  7. public:; ?! R/ f* V' h
  8. MainView();2 O0 A$ T+ m4 b3 Z
  9. ~MainView() {};7 b3 D% L& u" V0 }
  10. virtual void setupScreen();, a7 d: c, Q, p5 b8 ]5 Y
  11. virtual void increaseValue();
    # X  U" [9 R) V: Z' d* u
  12. virtual void decreaseValue();
    6 `% d, J) z& _- q2 O* {) x
  13. void updateGFXElements();8 P: K0 J% k+ ?" N9 K
  14. . L& R% y* u8 O# t
  15. void cntTextClickHandler(const TextAreaWithOneWildcard& cntTxt, + i) H  q) f; A( i- q' z
  16. const ClickEvent& e); # N, U0 s8 n: R! S5 }( `
  17. protected:
    7 j* ]! }8 ^) C
  18. private:, v( M5 O; \, a- U: R" @
  19. uint8_t count;
    " d) X7 o8 M5 y* j2 o! V: x
  20. Callback<MainView, const TextAreaWithOneWildcard&, const
    ) Z* _/ O& r7 I: Y! t' d- x
  21. ClickEvent&> txtClickedCallback;
    " M' L, Y) A; ^$ S+ ]6 `& S7 x& g9 `
  22. };
    1 k1 C! u$ K+ |' X, c
  23. #endif // MAIN_VIEW_HPP
复制代码

- K4 x9 u6 \4 O$ }7 X! S9 H3 |5 ~) r. ?( Y, k# @
完整版请查看:附件 TouchGFX 控件附加Mixin功能的方法介绍_v1.0.pdf (458.08 KB, 下载次数: 12)
赞 收藏 评论0 发布时间:2023-2-14 18:54

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版