Pyqt5 Model/view框架 1

本文介绍了一个使用PyQt5实现的简单Model/View框架示例,通过自定义MyListModel类,展示了如何创建模型、设置行数、获取数据,并将其应用于QListView中展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pyqt5 Model/view框架 1
这里按着 Chen Chun-Chia的《PyQt's Model/View Framework》走一遍
参考: https://www.cnblogs.com/hangxin1940/archive/2012/12/07/2806444.html

代码:

# -*- coding: utf-8 -*-

import sys
import sys
from PyQt5.QtWidgets import QWidget, QToolTip, QApplication
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sys


class MyListModel(QAbstractListModel):
    """
    我的第一个模型
    """
    def __init__(self,parent=None):
        super(MyListModel,self).__init__(parent)

        #这是数据
        self._data=[70,90,20,50]


        pass

    def rowCount(self, parent=QModelIndex()):
        """
        这个方法返回了数据的行数
        也就是有多少个条目得数据
        """

        return len(self._data)

    def data(self,index,role=Qt.DisplayRole):
        """
        根据当前index索引,返回当前的数据
        然后再由Qt进行渲染显示
        """

        #如果当前得索引是不活动得
        if not index.isValid() or not 0 <= index.row() < self.rowCount():
            #亦或者当前的索引值不在合理范围,即小于等于0,超出总行数
            return QVariant() #返回一个QVariant,相当与空条目

        #从索引取得当前的航号
        row=index.row()

        #如果当前角色是DisplayRole
        if role==Qt.DisplayRole:
            #返回当前行的数据
            return self._data[row]

        #如果角色不满足需求,则返回QVariant
        return QVariant()




def main():
    app=QApplication(sys.argv)


    #新建一个ListView
    view=QListView()
    #新建一个自定义Model
    model=MyListModel()
    #设置view的model
    view.setModel(model)


    view.show()

    sys.exit(app.exec_())


if __name__ == "__main__":
    main()

效果:
在这里插入图片描述

全部代码:
https://download.youkuaiyun.com/download/wowocpp/12423928

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值