22、touchGFX学习Model-View-Presenter设计模式

这篇具有很好参考价值的文章主要介绍了22、touchGFX学习Model-View-Presenter设计模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

touchGFX采用MVP架构,如下所示:
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
本文界面如下所示:
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
本文将实现两个操作:
1、触摸屏点击开关按键实现打印开关显示信息,模拟开关灯效果
2、板载案按键控制触摸屏LED灯的显示和隐藏

一、触摸屏点击开关按键实现打印开关显示信息,模拟开关灯效果

实现的方向为view->present->model

1、添加led开关交互事件:button_clicked_led

22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式

2、screenView.hpp中声明button_clicked_led函数,再到screenView.cpp中定义此函数并执行通知Presenter层

22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式

3、screenPresenter.hpp中声明button_clicked_led函数,screenPresenter.cpp中定义此函数将消息传递给model层

22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式

4、Model.hpp中声明button_clicked_led函数,Model.cpp中定义此函数将依据此消息执行开关灯操作

22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
如此即可完成触摸屏开关控制硬件led灯的亮灭
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式

二、板载案按键控制触摸屏LED灯的显示和隐藏

流程方向:model->modelListener->present->view

1、ModelListener.hpp中声明函数notify_key_event,并在Model.cpp中定义此函数,将外部按键的动作通知给modelListener

因为ModelListener被Model继承了,也被screenPresenter继承了
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式

2、screenPresenter.hpp中声明函数notify_key_event,并在screenPresenter.cpp中定义此函数,并通知给view

22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式

3、screenView.hpp中声明函数notify_key_event,并在screenView.cpp中定义此函数,并更改界面灯的显示隐藏

22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式

image1_led是这个灯的名字哈
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
如此就实现了外部按键控制触摸屏

三、补充另一个:按键切换屏幕背景色

22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
添加KeyController.cpp|KeyController.hpp文件
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式

KeyController.cpp

#include "KeyController.hpp"
#include "Key_Driver.h"

using namespace touchgfx;

void KeyController::init()//按键初始化
{
    //Key_Init();//在BSP中统一初始化
}

bool KeyController::sample(uint8_t& key)//按键扫描
{
    uint8_t value = 0;

    if(Key_ScanPin(&value) < 0)return false;//Key_ScanPin按键扫描并获取键值
    key = value;
    return true;
}

KeyController.hpp

#ifndef SCREENVIEW_HPP
#define SCREENVIEW_HPP

#include <gui_generated/screen_screen/screenViewBase.hpp>
#include <gui/screen_screen/screenPresenter.hpp>
#include "stdint.h"

class screenView : public screenViewBase
{
public:
    screenView();
    virtual ~screenView() {}
    virtual void setupScreen();
    virtual void tearDownScreen();
    virtual void button_clicked_led();
    virtual void notify_key_event(uint8_t event,uint8_t KeyValue);
protected:
};

#endif // SCREENVIEW_HPP

TouchGFXHAL.cpp添加按键执行代码
打开​​TouchGFXHAL.cpp​​​文件新建一个​​KeyController​​对象
然后在​​void TouchGFXHAL::initialize()​​里面这个对象赋值给系统,记得调用初始化函数
22、touchGFX学习Model-View-Presenter设计模式,STM32,学习,设计模式
如此即可实现按键改变屏幕背景色

三、参考文章

没使用过touchGFX则先看视频:https://www.yuanzige.com/course/detail/80229
Model-View-Presenter设计模式示例:https://smallash.blog.csdn.net/article/details/127047799?spm=1001.2014.3001.5502文章来源地址https://www.toymoban.com/news/detail-648973.html

四、学习笔记

到了这里,关于22、touchGFX学习Model-View-Presenter设计模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt 模型(model)/视图(view)详解

      以下所有代码均可在Qt安装目录:Qt安装目录/examples中找到   在没有使用模型/视图的应用程序中,一个标准的表格组件是一个用户可以修改的数据元素的二维数组。表格组件能够通过读写表格组件提供的数据元素来集成到程序中。这种方法在大多数应用中都很直观而且

    2024年01月16日
    浏览(47)
  • Pyqt Model View 的使用方法

    全是嵌套的callback 的实现方法,层级分离,通过类的继承,拓展基础类的功能,通用性不错,省了自己在,调用原始方法,构建view 和 控制数据库,再将数据同步到板卡,利用现成的基础类,自己在拓展一个功能就🆗了 C 没有继承和多态,一言难尽,Python 的继承和多态应该是最容易理解的 添

    2024年02月07日
    浏览(60)
  • Qt Quick系列(7)—Model-View

    🚀作者:CAccept 🎂专栏:Qt Quick 在QML中,model和view由delegate连接,他们的关系如下👇 1、delegate 属性:delegate知道model的内容以及如何可视化它- 怎么显示 。 2、view知道delegate的概念以及如何布置它们- 怎么摆放 。 3、model属性:model只知道它所表示的数据- 要显示的内容集合 。

    2024年02月12日
    浏览(39)
  • Qt关于Model/View大数据量刷新的处理经验

    前段时间有同学咨询关于大数据量的Model刷新时卡顿的优化方案,通过评论留言的方式回答了一部分,但感觉不够全面。因为这个是之前项目重点解决的问题,处理的过程中收获颇多,这里就基于之前的项目经验进行完整的总结,希望对大家在处理类似问题的过程中能有所启

    2024年02月08日
    浏览(41)
  • Qt 中model/View 架构 详解,以及案例实现相薄功能

    ​ 我们的系统需要显示大量数据,比如从数据库中读取数据,以自己的方式显示在自己的应用程序的界面中。早期的 Qt 要实现这个功能,需要定义一个组件,在这个组件中保存一个数据对象,比如一个列表。我们对这个列表进行查找、插入等的操作,或者把修改的地方写回

    2024年02月06日
    浏览(42)
  • 如何避免 QT 的 View/Model 模式产生消息激活的死循环?

    当收到QTableWidget的itemChanged信号时,关联的槽函数一般用于响应单元格数据的修改。它可以执行以下一些常见的工作: 更新数据:槽函数可以获取修改后的数据,并根据需要更新相关的数据结构或变量。 数据验证:槽函数可以对修改后的数据进行验证,检查其是否满足特定条

    2024年01月21日
    浏览(48)
  • 一文带你了解QT Model/View框架的设计思想和实现机制

    目录 1、QT Model/View框架简介 1.1、QT Model/View是什么? 1.2、QT Model/View框架核心思想 1.3、Model/View框架工作机制 1.4、Model/View框架的类 2、Model 2.1模型简介 2.2、模型索引 2.3、数据角色 2.4、QStringListModel 2.5、QFileSystemModel 2.6、QSortFilterProxyModel 3、View 4、Delegate 5、项选择模型 5.1、QIt

    2024年02月05日
    浏览(105)
  • 05-1_Qt 5.9 C++开发指南_Model/View结构基础(基本原理;数据模型;试图组件;代理)

    Model/View(模型/视图) 结构是 Qt 中用界面组件显示与编辑数据的一种结构,视图 (View)是显示和编辑数据的界面组件,模型 (Model) 是视图与原始数据之间的接口。 Model/View 结构的典型应用是在数据库应用程序中,例如数据库中的一个数据表可以在一个 OTableView 组件中显示和编辑。

    2024年02月17日
    浏览(51)
  • 【论文笔记】SVDM: Single-View Diffusion Model for Pseudo-Stereo 3D Object Detection

    原文链接:https://arxiv.org/abs/2307.02270   目前的从单目相机生成伪传感器表达的方法依赖预训练的深度估计网络。这些方法需要深度标签来训练深度估计网络,且伪立体方法通过图像正向变形合成立体图像,会导致遮挡区域的像素伪影、扭曲、孔洞。此外,特征级别的伪立体

    2024年02月08日
    浏览(47)
  • 【Jetpack】ViewModel 架构组件 ( 视图 View 和 数据模型 Model | ViewModel 作用 | ViewModel 生命周期 | 代码示例 | 使用注意事项 )

    Activity 遇到的问题 : 瞬态数据丢失 : 操作 Activity 时 , 如果 屏幕 自动旋转 , 当前 Activity 组件会 执行销毁操作 , 并重新创建新的 Activity 组件 , 该操作会 导致 Activity 的 瞬态数据 丢失 ; 内存泄漏 : 在 系统组件 如 Activity 中 , 启动了一个线程 , 在线程中执行一系列操作 , 如果 A

    2024年01月25日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包