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

STM32H750DK智能零售界面设计——5使用ScollList实现滑动商品浏览界面

[复制链接]
EPTmachine 发布时间:2025-10-28 18:44

使用ScollList实现滑动商品浏览界面

STM32H750DK的屏幕是480x272,GUI布局设计时,一行可以显示四个商品。

STM32H750DK智能零售界面设计——4自定义Container接口设计和实现 - ST中文论坛活动 ST意法半导体中文论坛

中设计的Container是在一行中显示四个商品,为显示更多的商品,采用TouchGFX中ScrollList控件来显示多行商品并实现上下滑动查看更多商品的功能。

ScrollList设置和使用

在TouchGFX的控件菜单中选择并添加ScrollList控件

ScrollList_Add.png

在右侧的ScrollList的属性栏中对其属性进行设置,比如ScrollList名称、滚动方向、项目对应的容器模板、项目数量、动画效果参数等。

ScrollList_Para.png

设置完成并生成代码。ScrollList控件在ShopScreen屏幕上,生成代码的基类文件为ShopScreenViewBase.cpp/hpp,继承类文件为ShopScreeView.cpp/hpp,开发者在继承类文件中添加该控件的自定义代码,ScrollList控件说明文档中指出开发者需要在对应的继承类中重写scollListxxUpdateItem函数,实现具体的函数功能。

在ShopScreen中添加scrollListC0scrollListF4scrollListH7三个控件用于显示不同系列的开发板。其中scrollListF4scrollListH7初始化为不可见。

ShopScreen_ScrollLists.png

在生成的ShopScreeView.hpp中添加scollListxxUpdateItem虚函数声明

class ShopScreenView : public ShopScreenViewBase
{
public:
    ShopScreenView();
    virtual ~ShopScreenView() {}
    virtual void setupScreen();
    virtual void tearDownScreen();

    virtual void scrollListC0UpdateItem(BoardSelect& item, int16_t itemIndex);
    virtual void scrollListF4UpdateItem(BoardSelect& item, int16_t itemIndex);
    virtual void scrollListH7UpdateItem(BoardSelect& item, int16_t itemIndex);
    ...
protected:
};

ShopScreeView.cpp中调用BoardSelect容器类的接口函数实现scrollList项目更新时对应GUI的更新。

void ShopScreenView::scrollListC0UpdateItem(BoardSelect& item, int16_t itemIndex)
{
    switch(itemIndex)
    {
    case 0:
        item.updateallimage(C0_group);
        item.setBoardname(T_IDC031,first);
        item.setBoardname(T_IDC051,second);
        item.setBoardname(T_IDC071,third);
        item.setBoardname(T_IDC092,fourth);
        break;
    default:
        break;
    }

}

void ShopScreenView::scrollListF4UpdateItem(BoardSelect& item, int16_t itemIndex)
{
    switch(itemIndex)
    {
    case 0:
        item.updateallimage(F4_group1);
        item.setBoardname(T_IDF401RB,first);
        item.setBoardname(T_IDF410RB,second);
        item.setBoardname(T_IDF411RE,third);
        item.setBoardname(T_IDF412ZG,fourth);
        break;
    case 1:
        item.updateallimage(F4_group2);
        item.setBoardname(T_IDF413ZH,first);
        item.setBoardname(T_IDF429ZI,second);
        item.setBoardname(T_IDF439ZI,third);
        item.setBoardname(T_IDF446RE,fourth);
        break;
    case 2:
        item.updateboardimage(F4_group3,first);
        item.setBoardname(T_IDF446ZE,first);
        item.setiteminvisible(second);
        item.setiteminvisible(third);
        item.setiteminvisible(fourth);
        break;
    default:
        break;
    }

}
void ShopScreenView::scrollListH7UpdateItem(BoardSelect& item, int16_t itemIndex)
{
    switch(itemIndex)
    {
    case 0:
        item.updateallimage(H7_group1);
        item.setBoardname(T_IDH723ZG,first);
        item.setBoardname(T_IDH743ZI,second);
        item.setBoardname(T_IDH743ZI2,third);
        item.setBoardname(T_IDH745ZI_Q,fourth);
        break;
    case 1:
        item.updateallimage(H7_group2);
        item.setBoardname(T_IDH753ZI,first);
        item.setBoardname(T_IDH755ZI_Q,second);
        item.setBoardname(T_IDH7A3ZI_Q,third);
        item.setBoardname(T_IDH7S3L8,fourth);
        break;
    default:
        break;
    }

}

总结

通过自定义Container实现用户自定义控件,结合ScollList可以快速实现滑动列表的效果。

收藏 评论0 发布时间:2025-10-28 18:44

举报

0个回答

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版