编辑界面案例分析,数据添加、移除、保存与取消操作

有这样一个界面,左侧添加条件,右侧对条件内容进行编辑,当点及确定保存编辑,点击取消则取消编辑。


这里简单讲一下类里面的设计,要实现如上功能,最重要的是要牢记,所有的操作要在点击确定按钮的时候才能确认操作有效。

点击取消按钮是要把界面恢复到刚刚打开或者上次确认按钮打开时的状态。

所以,添加和移除按钮以及右侧对于各种条件的编辑都不能立即保存到真正有意义的数据结构中,只能保存在各自的缓存中。


首先要想清楚,对于UI界面的修改不能马上保存到数据中,只有点击确认按钮的时候再读取页面的数据保存到数据结构中,也就是保存两份数据,一份用作界面显示可编辑,另一份用作数据处理,这样做就能保证在点击取消按钮的时候能够恢复编辑之前的数据。

所以在这里需要根据需求来自己涉及一个info数据结构。


在类中添加4个数据结构infoList,addInfoList,removeInfoList,QMap<QTableWidgetItem*,Info>map;

infoList 用来存数已经存在的数据机构,每次点击确定按钮后所有有效的数据都保存在此。

addInfoList 用来暂时存储添加操作生成的info数结构。每一条条件对应一个数据机构,并且当界面中添加了一条条件后,相应的添加一个数据结构info到addInfoList中。

removeInfoList 用来暂存移除按钮操作移除掉的数据。

QMap<QTableWidgetItem*,Info>map 用来存储界面中已经存在的界面表格中的item和对应的info,在这里记录的是每行表格条件与后台数据的对应关系。

当界面初始化时,首先要遍历InfoList,根据其中的数据在界面上显示


在类中对应4个按钮的4个主要的操作是,

add 点击添加按钮时,界面的条件表格中添加一行,并且添加一个新的数据info到addInfoList中。并且把表格第一个item与info插入到QMap中。

remove 点击移除按钮,移除界面表格中的item,并且把与之对应的info从map中找出,添加到removeInfoList中。

ok 

1 遍历map,将同时存在与removeInfoList中与map中的Info数据从map中清除,并且清空removeInfoList,其中的数据如果是指针也一并清理。

2 清空addInfoList.

3 遍历界面表格与map,将表格中的数据写入对应的Info中。

4 将map中的info,添加到infoList中,待处理。

cancel 这里是对于添加与移除操作的逆操作。

1 遍历map,将同时存在与addInfoList中的info删除。清空addInfoList.

2 清空removeInfoList,如果其中的数据是指针,不要删除指针。

3 清空map。


这个页面的功能稍复杂,需要多次尝试多次思考才能找到窍门,成功实现。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值