PyQt5: Model-View框架之QStringListModel、QListView

本文介绍了Qt中的Model-View框架,包括信号-槽机制、Model为其他组件提供数据接口、QListView与QStringListModel的绑定,以及如何实现QListView的鼠标拖放功能。作者通过实例展示了如何操作数据结构和使用QModelIndex与DisplayRole进行内容处理。

1.Model-View框架

Model/View结构

(1)通讯(model、view、delegate之间使用“信号-槽”机制)

1)MODEL为体系中其它组件提供数据接口,与Data通讯
2)VIEW从Model中获取QModelindexs(,QModelindexs是指向DataItems的引用), 可通过获取datalitem的index,获取item
3)Delegate直接使用模型索引与模型通讯

(2)Data的数据结构

model的数据结构

2. from PyQt5.QtCore import QStringListModel

Model类大概都继承于QtCore

3. from PyQt5.QtWidgets import QListView

View类应该都继承于QtWidgets
QListView是列表视图类,QListView应该是定义了View窗口及内嵌子窗口布局的对象及初始化属性值,而表达在QListView内的内容及所涉及的计算就交给了QStringListModel类对象,因他们两缺了谁都没意思,所以,使用前两者要先绑定在一起(一种对象层面的组合方式)

4. QStringListModel与QListView “绑定”

QStringListModel对象、QListView对象通过下面代码“绑定”:(可参考:muzing的杂货铺https://muzing.top/posts/5ff61cbd/)!

代码功能: 想实现在QListView中鼠标拖放,以调整item的row顺序
开始还以为需要像MFC框架一样,后来发现QListView本身就可以通过设置QAbstractItemView类的“拖放”属性的来实现。
核心代码:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值