【Qt学习笔记】Model/View设计模式

Qt的Model/View设计模式实现了数据与显示的分离,Data/Model/View结构使得数据处理与界面更新协调高效。Model作为桥梁,连接Data和View,允许通过操作Model来更新View显示。该模式提供了便捷的数据绑定,例如QStringListModel与ListView的绑定,通过setData接口可直接修改Model数据,进而反映到View上。此外,代理(QProxyModel)用于定制数据显示和编辑方式。Model中的数据以项(Item)的形式存储,QModelIndex用于定位Item。信号和槽机制确保了Model、View和代理之间的通信。QStandardItemModel是常见的二维数据管理模型。

什么是Model/View设计模式,该模式解决了什么问题

一个好的有图形界面的应用程序的软件架构应该是显示和数据是分离的,显示部分不应该去处理数据,数据处理部分更不应该去做显示相关的事情。

Qt提供的Model/View设计模式就能很好完成改任务。

其实更好的应该叫做Data/Model/View设计模式。这样能看出这个结构就是Model在Data和View之间提供了一个桥梁,来将数据和显示分离开。

如何显示

Qt提供的这个模式使用起来非常方便,Data部分的代码不需要开发者自己实现,View中的代码也不需要自己去实现,只需要将view和model绑定,data和model绑定,之后仅仅操作Model就可以在View上显示,并且修改Data中的数据。

比如以下代码分别用两个接口将data和model、view和model进行了绑定。这个操作之后不需要其它任何语句UI就能够显示除data的数据了。

QStringListModel *stringListModel_;    
QStringList strList;
strList << "item1" << "item2" << "item3" << "item4" << "item5" << "item6";


ui->listView->setModel(stringListModel_);
stringListModel_->setStringList(strList);

如何修改数据

在完成了绑定之后修改数据主要就是通过model来修改了。

在界面上双击item也可以进行修改

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值