基于Qt 平台的品类自适应软件设计实践

2023-07-08 06:35杨旺喜周洋洋周峻丞
科技与创新 2023年12期
关键词:尺码配置文件品类

杨旺喜,罗 征,周洋洋,周峻丞

(海装驻天津地区第二军事代表室,天津 300308)

在设计品类管理软件时,如果将品类信息硬编码到软件中,当品类信息有更改时,就不得不修改和重新编译发布软件,即软件对品类参数无可扩展性。

现将品类管理软件只设计为一个软件框架[1-3],让它可以自适应读取多级品类信息且可支持用户选择、实时统计和数据保存。图1 为无配置文件时软件启动后的截图,图2 为品类配置文件截图,图3 为软件加载品类配置文件后自适应加载信息后的截图。

图1 无配置文件时软件启动后截图

图2 配置文件示例

图3 软件加载图2 所示的配置文件后的截图

1 软件框架设计

软件采用3 级品类管理方式[4-5],第一级品类通过工具栏上的下拉框进行选择,第二级品类通过软件上的Tab 页分类展示,第三级品类在各Tab 页上具体呈现。3 级品类的具体内容都通过配置文件具体定义,软件只提供框架功能,不定义具体品类内容。软件框架如图4 所示。

图4 软件框架图

2 各级品类设计

2.1 第一级品类设计

第一级品类在软件上设置为利用工具栏进行下拉选择(QComboBox),下拉框的内容在软件启动时通过读取配置文件夹中配置文件的名称而定,如配置文件夹中有classA.conf、classB.conf 和classC.conf 共3个配置文件,软件读取后,第一级品类下拉框中被填入classA、classB 和classC 这3 个待选项。

当第一级品类下拉框中的某一个品类被选择后,软件首先析构当前所加载的品类内容,然后读取被选品类对应的配置文件,按照配置文件的内容,构建Tab页及展示每个Tab 页的内容。

2.2 第二级品类设计

在第一级品类配置文件中,以中括号将第二级品类名称括起来,如“[sub-classX]”,以此作为各第二级品类的分隔和第二级品类的名称。软件将以第二级品类的数量创建对应数量的Tab 页,将Tab 页重命名为第二级品类名称(无中括号),并将默认Tab 页设为第一个Tab 页。

2.3 第三级品类设计

在第一级品类配置文件中,每2 个第二级品类名称之间的行就是第三级品类的内容(属于上一个第二级品类),其中每一行是一种品类,设计如下(举例):

“工服C;203.0;160,165,170,175,180,185,190;86,88,90,92,94,96,98,100,104,108,110;3”

上面的例子表示,第三级品类之一为“工服C”,其单价为203.0 元,可选衣长有“160,165,170,175,180,185,190”这7 个尺码,可选衣宽为“86,88,90,92,94,96,98,100,104,108,110”这11 个尺码,最多可选数量为3件。这几个参数用分号分隔。

软件的每个Tab 页内最外层是一个列布局(QVlayout),以实现软件窗口组件自适应窗口大小。该列布局里面是一个滚动窗口(QScrollArea),以实现有较多第三级品类内容时可以通过滚动鼠标或点击下移按钮展示所有内容。在滚动窗口中又是一个列布局,以存放具体的第三级品类内容。

软件解析第三级品类的行内容(以上面第三级品类为例),针对每一行,在软件创建一个行布局。行布局中第一个组件是QCheckBox(复选框),以供用户选择该品类;行布局的第二个组件是QLable(标签),对应于价格;行布局中的第三个组件是QLable(标签),用于展示该品类的照片;行布局的第四个组件是一个列布局,列布局的2 个组件都是行布局,行布局中是多个QRadioButton(单选框),对应于衣长和衣宽尺码选项;行布局的第五个组件是一个QSpinBox(自旋框),它可选数字上限为第三级品类配置的最后一个参数。

每2 个第三级品类的行布局之间用横线分割,以增加软件的可读性。

2.4 第三级品类图片自适应设计

将第三级品类图片保存为配置文件中第三级品类名称,由软件解析到品类名称后,据此名称从软件的资源文件夹加载对应的图片,具体为先由QFile 将图片文件读取到字节序列变量(QByteArray)中,再将此字节序列变量转化成一个QImage,最后将它转化为QPixmap(位图)。

2.5 第三级品类配置字段不同时的设计

当第三级品类的配置行字段数量不同时,软件如何自适应读取呢?如有这样一个配置行:

“工服帽B;62.23;59,60,61,62,63,64,65;1”

相较于前面“工服C”的例子,“工服帽”仅有一个尺码型号,其他品类可能只有“均码”这样的尺码描述。解决办法是软件读取配置时需要判断分号的个数,以此来判断有几个尺码维度,进而决定行布局的第四个组件是否要创建为一个列布局。

2.6 第一级品类在线切换设计

在第一级品类被选择后,所有的第二、三级品类信息都会被加载到软件框架中,第二级品类内容的切换通过点击不同的Tab 页就可以实现;但第一级品类的切换,涉及到软件析构当前页面内容再重新加载新的配置文件,过程会复杂很多。

首先是遍历每个Tab 页,获取每个Tab 页里的布局,继而获取该布局中的第一个子元素,如果该子元素里有布局,则采用递归的方式继续获取里面的子布局,否则获取子布局中的QWidget(窗口),析构此Widget,最后要把所有的Tab 页进行析构。Tab 页进行析构的执行流程如图5 所示。

图5 Tab 页进行析构的执行流程图

3 统计功能设计

通过上面的设计,可以实现软件框架自适应读取品类配置文件,但软件的目的是为了实时统计(如实时显示用户所选品类总数、总价等)和保存数据。

统计功能的实现,需要在创建第三级品类QCheckBox(复选框)和QSpinBox(自旋框)时注册这2 个组件信号的槽函数,当用户选择某个品类时,被触发的槽函数首先遍历本Tab 页所有的品类行布局,直到找到发出信号的品类,然后从该行找到具体内容(如价格和数量等),将计算出的单项值合到软件所保存的总体值中,以实时为用户显示统计值。对于取消勾选的情况,也是类似的。

4 保存功能设计

遍历所有Tab 页,遍历Tab 页中与第三级品类对应的行布局,进一步解析出代表品类名的复选框及表示所选数量的自旋框,以判断用户是否选择了该品类及获取用户所选的数量,这些信息综合起来就构成了要保存的材料。

将用户所选保存到结果文档中,用户需要在软件框架中输入特征信息,如身份、时间、组别等,然后以用户输入的特征信息为文件名创建文件,接着将软件中用户所选的信息及统计结果保存到该文件中。

5 读取和更改保存的文件

软件用户在保存结果文件后,如果想更改之前的选择清单,可以在软件框架中通过“文件→打开”选项导入之前生成的结果文件,以使软件显示上次清单内容。其关键点为:依据清单中的第二级品类名打开对应的Tab 页面,依据清单中的第三级品类名定位到具体的品类布局行,继而将第三级品类复选框置为勾选状态,选定其他配置(如尺码),设置所选数量。再次保存文件时设计为提醒用户是否覆盖,或者重命名。

6 结束语

针对在软件中硬编码品类信息的缺点,本文设计了可以品类自适应的软件框架,以3 级品类管理为例,介绍了整体软件框架和各级品类设计、统计及保存功能,详细介绍了第一、二、三级品类在软件上的实现方法及第一级品类的在线切换方法,是一种参数自适应式的软件设计思路,对其他类似软件在设计上有一定的借鉴参考意义。

猜你喜欢
尺码配置文件品类
提示用户配置文件错误 这样解决
Implicit Attribute Recognition of Online Clothing Reviews Based on Bidirectional Gated Recurrent Unit-Conditional Random Fields
郑人买履
互不干涉混用Chromium Edge
忘记ESXi主机root密码怎么办
购物口语大会串
干不过老大,就创造一个品类成为老大——通过GUNNAR聊聊自建品类
参展推荐品类索引
脚上没批示
打印机设置