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

STM32H750DK智能零售界面设计——2商品显示GUI和交互函数

[复制链接]
EPTmachine 发布时间:2025-10-26 19:08

商品显示设计和实现

TouchGFX中设计人机界面,可以定义多个屏幕(Screen),每个屏幕上添加部件(Widget)和容器(Container)实现具体UI布局和对应功能。每个屏幕可以定义交互动作(Intercaction)来实现自定义的事件,实现交互功能。利用TouchGFX支持的功能,可以设计出功能明确、代码结构清晰的UI代码。以下对商品显示GUI相关部分的设计进行介绍。

商品显示设计

商品需要显示商品示意图、商品名称和价格、用于调整购买数量的按键和数量显示。其中商品示意图使用TouchGFX中的image部件来显示。

image_widget.png

开发板屏幕的分辨率为480x272,显示的图片分辨率使用80x80。

NUCLEO_C031C6.png

用于显示的图片放置到工程的TouchGFX\assets\images路径中,需要进行图片分类时,将一个类别的图片存放到同一个文件夹中。

image_assets_folder.png

在设置部件的图片属性时,选择添加到工程中的图像。

image_assets_project.png

通过左右两个带图标的按键实现商品数量的调节。

button_icon_widget.png

在容器的Interaction中定义按键的响应函数,更新当前商品的数量,并更新到用于显示的文本框内。

button_icon_interaction.png

单个商品显示设计可以通过复制粘贴来实现多个商品显示设计。另外可以通过自定义容器的方法来实现更为通用的自定义部件,提高代码的复用性。添加一个水平显示4个商品的自定义容器,并指定容器的名称和显示区域大小。

Container_Add.png

容器对应的Interaction中包含对应按键的交互动作,设置当按键按下时调用自定义的虚函数。

Container_InterAction.png

以上通过TouchGFX的图形化界面添加部件到容器中,设置交互动作信息,完成UI部分的布局,实现用户自定义的UI组件,是TouchGFX设计中的重要方法。

点击右下角的生成代码按键,可以得到对应的源代码,在其中添加自定义代码实现具体的功能。

generate_code.png

生成的代码主要在generated/gui_generated和gui文件夹,前者的文件内容是自动生成的,用户不能修改,后者是用于添加用户自定代码的文件。

TouchGFX_code_struct.png

由于之前添加的Interaction中定义调用虚函数,需要在代码中对虚函数进行重写,实现具体的功能。以上设置的虚函数可以在BoardSelectBash.hpp中找到对应的虚函数定义。

class BoardSelectBase : public touchgfx::Container
{
public:
    BoardSelectBase();
    virtual ~BoardSelectBase();
    virtual void initialize();

    /*
     * Virtual Action Handlers
     */
    virtual void buttonMinusClicked()
    {
        // Override and implement this function in BoardSelect
    }
    virtual void buttonAddClicked()
    {
        // Override and implement this function in BoardSelect
    }
    virtual void buttonMinusClicked1()
    {
        // Override and implement this function in BoardSelect
    }
    virtual void buttonAddClicked1()
    {
        // Override and implement this function in BoardSelect
    }
    virtual void buttonMinusClicked2()
    {
        // Override and implement this function in BoardSelect
    }
    virtual void buttonAddClicked2()
    {
        // Override and implement this function in BoardSelect
    }
    virtual void buttonMinusClicked3()
    {
        // Override and implement this function in BoardSelect
    }
    virtual void buttonAddClicked3()
    {
        // Override and implement this function in BoardSelect
    }
    ....
}

根据提示,在BoardSelect.hpp中添加以上虚函数的声明,在BoardSelect.cpp中重写函数,实现修改选中商品的购买数量。

BoardSelect.hpp中的声明和用于保存购买数量的成员变量

class BoardSelect : public BoardSelectBase
{
public:
    BoardSelect();
    virtual ~BoardSelect() {}

    virtual void initialize();
    virtual void buttonMinusClicked();
    virtual void buttonAddClicked();
    virtual void buttonMinusClicked1();
    virtual void buttonAddClicked1();
    virtual void buttonMinusClicked2();
    virtual void buttonAddClicked2();
    virtual void buttonMinusClicked3();
    virtual void buttonAddClicked3();

protected:

private:
    int cacheOrderNum;
    int cacheOrderNum1;
    int cacheOrderNum2;
    int cacheOrderNum3;
};

BoardSelect.cpp中的对第一组按键的增加和减少商品功能的代码。

void BoardSelect::buttonMinusClicked()
{
    if(cacheOrderNum>0)
        cacheOrderNum--;
    Unicode::snprintf(OrderNumBuffer,10,"%d",cacheOrderNum);
    OrderNum.invalidate();
}

void BoardSelect::buttonAddClicked()
{
    if(cacheOrderNum<10)
        cacheOrderNum++;
    Unicode::snprintf(OrderNumBuffer,10,"%d",cacheOrderNum);
    OrderNum.invalidate();
}
.....

总结

使用TouchGFX的图形化工具可以快速完成GUI的布局设计、部件添加以及GUI交互设置。在生成的代码中通过重写虚函数来实现具体的交互功能,TouchGFX使用C++作为编程语言,语言特性更多,熟练后使用TouchGFX编写GUI程序是不错的选择。

收藏 评论2 发布时间:2025-10-26 19:08

举报

2个回答
STMCU-管管 回答时间:2025-10-27 09:39:10

不错,后边项目成品可以发创客秀

EPTmachine 回答时间:2025-10-27 10:45:25

STMCU-管管 发表于 2025-10-27 09:39
不错,后边项目成品可以发[创客秀](<a href="https://shequ.stmicroelectronics.cn/forum.php?mod=forumdisplay">https://shequ.stmicroelectronics.cn/forum.php?mod=forumdisplay</a>&amp; ...

[md]好的,现在这里发开发过程,后面在那边发成品。

所属标签

ST中文论坛活动

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


最新内容

相似分享

官网相关资源

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