编辑界面案例分析,数据添加、移除、保存与取消操作
2016-03-03 15:21
351 查看
有这样一个界面,左侧添加条件,右侧对条件内容进行编辑,当点及确定保存编辑,点击取消则取消编辑。
这里简单讲一下类里面的设计,要实现如上功能,最重要的是要牢记,所有的操作要在点击确定按钮的时候才能确认操作有效。
点击取消按钮是要把界面恢复到刚刚打开或者上次确认按钮打开时的状态。
所以,添加和移除按钮以及右侧对于各种条件的编辑都不能立即保存到真正有意义的数据结构中,只能保存在各自的缓存中。
首先要想清楚,对于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。
这个页面的功能稍复杂,需要多次尝试多次思考才能找到窍门,成功实现。
相关文章推荐
- HTML javacript 域名合法性检测
- std::string类的实现
- Android Support Library 23.2
- 数据结构,
- 开始做股票数据服务器
- SmartSVN上传项目遇到的问题
- AndroidStudio代码风格之保留单行(one line comments)的文档注释(JavaDoc)
- RecyclerView使用详解(二)
- JavaScript高级
- Bitbucket 让 pull request变得更强大,可即刻提升团队代码质量
- java linkedlist 原理
- Topcoder SRM 683 Div2 B
- 散列表(哈希表)应用实例,同时借助最小堆
- 自定义控件一、
- C# 文件压缩与解压(ZIP格式)
- Topcoder SRM 683 Div2 B
- codeforce 621A(水题)
- qt creator 快速入门 知识点索引 笔记
- 谈谈Android中的Divider是个什么东东
- Xcode控制台命令