- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
qt中数据存储方法(接口)的思路
鉴客?发布于 2010年11月02日 15时,?0评/530阅?1人收藏此代码,?我要收藏
顶0踩
声明:由于其它原因,只谈思路,具体实现还要靠自己在实际开发中总结在写这个之前,一直在想叫什么标题比较合适在写这个之前,在qtcn论坛查了“数据”关键字,大概只要35条左右记录,提到的与我想要说的无关???? 先说一下现象。以前自己写过程序,也看过别人写的程序,感觉代码比较长(个人觉得代码多维护比较麻烦,当然代码多少与业务逻辑有关),我说的长是指:在实 现同样功能的情况下,它本身有很大的精简空间。由于对数据存储的认识不同,造成的大量精力在为数据存储,数据同步及数据显示写很多逻辑。由于不同的数据打过多年的交道,特别欣赏数据库精简的接口调用,常用的大概就select, update, delete, insert, commit。自己也想实现这样的类似的接口,以便写程序时不要为数据花太多精力。自己在刚接触QT时,也是先看MVC模式,感觉QT把MVC发挥得淋漓尽致。随着时间的推移,发现MVC结构还是比较俗套,有点按步就班的感觉,在这种 模式下代码精简下来也不是一件容易的事。后来就把MVC模式改成xxTable(xxWidget)模式,不再理会其中的Model、View怎么结合的 了。但这样也有一个问题, 就数据传递、同步问题。当存在多个xxTable(xxWidget)时,它们之间需要数据同步显示,于是写了个itemList。这个itemList 类似一栋大厦,可以自由向上增加(记录Item数量),每层也能水平自由增加(Item中的字段),不用关心每层需要对齐问题,说得通俗一点就类似 Table结构,只是每条记录Item中的字段不受约束,可自己更改。记录中的每个节点是parent-self-children关 系,也就说每个节点都可以向上找到root_node节点,由root_node可以遍历所有的节点。大概就这样的一个立体结构。这个类提供了常用接口setData,getData,setItemData, getItemData还有其它的呢,当然还有,不过个人常用的就setData,getData,setItemData, getItemData(代名词),可能是以前用java用习惯了而采用这样的命名前两个用于key-value结构,后两个用于List结构。全图地址:/space-4870011-do-album-picid-668727.html结合图例看一下在实现thinkvd video effect中的Combox的部分代码(有关数据存储):
标签: 无
代码片段(1)
[代码]?cpp代码
view source
print?
001 void?ImEffectWidget::slotComBox(int?index)??//slot 处理 002 {
003 QString text; 004 QColor color;
005 QFont font; 006 QObject *obj = sender();
007 /* 1. for crop? ***************************/ 008 if?(obj-objectName() ==?comboxZoom){
009 ??doComboxValue(m_boxZoom,?effect_crop_aspect_name, index); 010 }
011 /* 2. for effect? ***************************/ 012 else?if?(obj-objectName() ==?comboxEffect){
013 ??doComboxValue(m_boxEffect,?filter_effect_name, index); 014 ??m_treeItem-setMediaData(filter_effect_index, index);?//for player
015 } 016 /* 3. for watermark? ***************************/
017 else?if?(obj-objectName() ==?comboxFont){ 018 ??doComboxValue(m_boxFont,?effect_item_font_family, index,?true);
019 }else?if?(obj-objectName() ==?comboxColor){ 020 ??doComboxValue(m_boxColor,?effect_item
文档评论(0)