[原创] 【STM32U599J-DK】TouchGFX之ScroolWheel(滚轮)详细教程

lugl4313820   2023-12-11 13:29 楼主
 
【前言】
作为手表的时间设置,可以使用文本框+按键,其次可以使用键盘+文本框,再者可以使用scroll Wheel控制来实现。相比三种方案,使用scroll Wheel(滚轮),控件少、直观、易操作,而且不需要对输入进行较验。所以作为优选方案。查找了实现滚轮的教程,官方给出了示例文档,几经研究后,感觉还是不是很直观,看到CSDN上有几位大佬也写出了详细的教程,但是版本过旧,所以在学习了官方文档与各路大佬的文章之后,我也初步的学会了scroll Wheel的使用。在此与大家分享如下,如有不对之处,还希望各位大佬给予指点。
【官方的学习示例】
这个教程做得还是比较详细的,有中英文的文档,但是中文的些描述还是不是非常的准确,如果英文比较好的大佬,可以直接阅读英文文档比较好。
【实现步骤】
  1. 创建两个自定义的容器,容器的大小为放置到屏幕上的比例来设置,一个为非选中状态,另一个为选中状态,以此来标定判断选择结果。
    132710oz0uqsqnlzclqmum.png
  2. 在我们的屏幕中创建一个scroll Wheel控件:
132710w7i06si76i55d56i.png
3、修改scroolWheel的属性值如下图,主要是配置文本的位置、个数、选中与非选中的状态等。
132710fb6v6yaxfzff0yyv.png
到此,我们的界面设计就完成了,接下来需要在工程中对他进行初始化设置。
4、在touchGFX Designer生成代码后,用编译器打开工程:
132710seoxz8vritty4ark.png
5、在工程中,有textCenterContainerselect.cpp、textCenterContainerunselect.cpp这是实现自定义控件的cpp,我们需要添回代码来初始化:
132710i78yiod4spgmmo8h.png
其代码为:
void textCenterContainerselect::updateText(int16_t value)
{
Unicode::snprintf(textBuffer, TEXT_SIZE, "%02d", value);
text.invalidate();
}

6、同样添加实updateText到另一个文件下:
132710meo5isw3zev400kf.png
7、最后我们在显示中对scrollWheel进行选择中与变化的函数进行实现:
首先我们有MainView.hpp中定义两个虚函数:
virtual void scrollWheelHourUpdateItem(textCenterContainerunselect& item, int16_t itemIndex);
virtual void scrollWheelHourUpdateCenterItem(textCenterContainerselect& item, int16_t itemIndex);
132710f8gx70g05531gowf.png

8、最后在mainview.cpp中实现这两个函数:

132710z2292mmxqxqjmtmy.png
代码如下:
void MainView::scrollWheelHourUpdateItem(textCenterContainerunselect& item, int16_t itemIndex)
{
item.updateText(itemIndex);
}
void MainView::scrollWheelHourUpdateCenterItem(textCenterContainerselect& item, int16_t itemIndex)
{
item.updateText(itemIndex);
}
到此,我们的界面设计与代码都完成了。在虚拟器上运行效果如下:
132710fu7s7ksh7vg7uzii.png
下载到开发板上面的效果:
132710f9lqfptgk4mf9tgl.jpg
【总结】
到此,我们对scroolWheel控制的使用到一段落,看起来几步的操作,我却花了一个周未的时间,翻看了好多资料与视频,试了N遍,最后实现后,我总结就几个步骤,学习成本非常高。为此我把所有的过程与代码都详细的记录下来,分享给大家,希望对大家有用。

回复评论 (5)

TouchGFX的教程网上好像不是很多。

点赞  2023-12-11 14:39
引用: wangerxian 发表于 2023-12-11 14:39 TouchGFX的教程网上好像不是很多。

对的,他对的硬件的要求比较高,最近国内用户的ST芯片可能用得少了,用户群体也不大,相比stm32其他的教程,那是相当的少。

点赞  2023-12-11 14:53
引用: lugl4313820 发表于 2023-12-11 14:53 对的,他对的硬件的要求比较高,最近国内用户的ST芯片可能用得少了,用户群体也不大,相比stm32其他的教 ...

我记得正点原子有那个教程,不过收费的。

点赞  2023-12-11 16:59
引用: wangerxian 发表于 2023-12-11 16:59 我记得正点原子有那个教程,不过收费的。

对的,收费好象几百块,不过现在版本一个月一个版本在升级,原来的只能拿来借鉴,有些变化大非常大。

点赞  2023-12-11 18:21
引用: lugl4313820 发表于 2023-12-11 18:21 对的,收费好象几百块,不过现在版本一个月一个版本在升级,原来的只能拿来借鉴,有些变化大非常大。

是啊,我记得我们项目开发到结束,不到一年,TouchGFX就更新了四五个版本了。

点赞  2023-12-12 10:17
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复