关于UI与平台代码管理 - 个人总结《一》

1.Qt代码如何组织?
其一,管理qss设置对象名很重要(例如QTableWidget#TableWidget_Style01),设置多种风格通过对象名来选择。
一个类型不应该太多种风格,尽量保证UI设计的一致性原则。
其二,Qt提供原始类都必须二次封装,且组织为一个独立的目录。方便代码命名管理、添加统一功能和设置风格。
其三,项目创建公共类组织到一个目录中,命名统一增加UiXXXX_X(XXXX参考Qt库名命名,_X为A/B/C各种类型)。
其四,UI需独立出参数缓冲区,参数发送改变同发送改变消息到UI控件并更新。
其五,UI控件又可分为两类控件,平台消息立即显示控件(命名为PA)和平台消息无需立即显示控件(命名为PB),
PB类控件是根据触控显示或关闭控件,为了加快应用启动时间则需要在触摸时创建,创建位置应该是触摸通知位置。
PA类控件是平台消息创建,两种方式:第一可以在mainwindow类中创建并消息关联;第二可以在本身类中使用一个静态函数创建对象并消息关联(好像有问题,消息关联不行)。
其六,代码的命名与功能代码文件组织需要提前约定,要方便名称检索。

2.UI的回调接口如何组织?
平台主动推送:注册可以实现按照意愿进行同步或异步回调注册。
该方式是注册函数,在平台层应该调用了同类型的函数指针。
平台中调用实现有两种:一种是通过多态特性实现接口类,使用工厂模式;
其二是纯C接口的接口函数,在该接口函数中使用全局函数指针来回调UI注册函数(检查空指针),该全局函数指针注册应该在UI中实现。
对于注册函数中使用什么方式和UI通信(消息队列,Qt事件消息,互斥锁)是根据UI的库和方法来定。
注册函数代码应该被组织在ui目录中,全局函数指针被注册也发生在Ui中,接口函数和全局函数指针应该是公共部分代码组织为一个独立的头文件和CPP,不要放入Ui目录中。
平台被动查询:被动查询分为阻塞式和非阻塞式,主要由平台层提供get/read接口来定。
比如值变化或者有值时才能读取有效,可是将该条件检测设计为阻塞条件(阻塞式中又有阻塞超时设计)。通常对于UI读取平台参数不需要阻塞式读取,阻塞式读取一般用于查询系统中断、查询系统标记位,查询触屏信息等场景中使用较多。

发布了41 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/wade_510/article/details/89045004