PyQt5 组件之QListView

QListView简介

QlistView类用于展示数据,它的子类是QListWIdget。QListView是基于模型(Model)的,需要程序来建立模型,然后再保存数据QListWidget是一个升级版本的QListView,它已经建立了一个数据储存模型(QListWidgetItem),直接调用addItem()函数,就可以添加条目(Item)
 

 QListView 常用方法

方法描述
setModel()用来设置View所关联的Model,可以使用Python原生的list作为数据源Model
selectedItem()选中Model的条目
isSelected()判断Model中的某条目是否被选中

 QListView 常用信号

信号描述
clicked当单击某项时,信号被发射
doubleClicked当双击某项时,信号被发射

QListView效果截图:

 功能描述:点击List View项,控制台输出点击相关数据信息。

 PyQt 模型设计:

PyQt 设计器截图:

 *.ui 转换为*.py 代码 

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

# Form implementation generated from reading ui file 'untitled3.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
import sys

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QStringListModel
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(829, 511)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.listView = QtWidgets.QListView(self.centralwidget)
        self.listView.setGeometry(QtCore.QRect(0, 0, 511, 441))
        self.listView.setObjectName("listView")

        # 实例化列表模型,添加数据
        slm = QStringListModel()
        self.qList = ['Item 1', 'Item 2', 'Item 3', 'Item 4']

        # 设置模型列表视图,加载数据列表
        slm.setStringList(self.qList)

        # 设置列表视图的模型
        self.listView.setModel(slm)
        # 单击触发自定义的槽函数
        self.listView.clicked.connect(self.clicked)

        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

    def clicked(self, qModelIndex):
        print(qModelIndex)
        # 控制台,你选择的信息
        print('你选择了:'+self.qList[qModelIndex.row()])



if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

 需要向PyUIC 生成的代码,添加如下代码片段:

重点实现ListView model 绑定和事件绑定

        # 实例化列表模型,添加数据
        slm = QStringListModel()
        self.qList = ['Item 1', 'Item 2', 'Item 3', 'Item 4']

        # 设置模型列表视图,加载数据列表
        slm.setStringList(self.qList)

        # 设置列表视图的模型
        self.listView.setModel(slm)
        # 单击触发自定义的槽函数
        self.listView.clicked.connect(self.clicked)
 def clicked(self, qModelIndex):
        print(qModelIndex)
        # 控制台,你选择的信息
        print('你选择了:'+self.qList[qModelIndex.row()])

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值