登录|注册|帮助中心|联系我们

导航
首页 综合百科 生活常识 数码科技 明星名人 传统文化 互联网 健康 影视 美食 教育 旅游 汽车 职场 时尚 运动 游戏 家电 地理 房产 金融 节日 服饰 乐器 歌曲 动物 植物
当前位置:首页 > 互联网

qt listview详细用法(listview添加多列)

发布时间:2023-08-13 19:37责任编辑:吴小强标签:ie
QListView简介

QListView列表视图可以用来以列表的形式来展示数据。在Qt中使用Model-View结构来处理数据与视图之间的关系,Model负责数据的存取,View负责数据的展示, 二者之间数据的交互则是通过委托(delegate)来实现。

QT提供了一些现成的models用于处理数据项:

??QStringListModel 用于存储简单的QString列表; ?StandardItemModel 管理复杂的树型结构数据项,每项都可以包含任意数据; ?QDirModel 提供本地文件系统中的文件与目录信息; ?QSqlQueryModel, QSqlTableModel,QSqlRelationTableModel用来访问数据库; ?

QListView是Model-View框架中的一个类,是Qt Model-View框架的组成部分,QListView实现了QAbstractItemView类定义的接口,以使其能够显示从QAbstractItemModel类派生的模型提供的数据。

QListView常用方法:

??setModel(): 用来设置View所关联的Model,可以使用Python原生的list作为数据源Model; ?selectedItem(): 选中Model的条目; ?isSelected(): 判断Model中的某条目是否被选中; ?setViewMode(): 设置视图模式。(ListMode: 条目从上到下布局,小尺寸显示, IconMode: 条目从左到右布局,大尺寸显示) ?

QListView常用信号:

??clicked: 单击某项时,发射此信号; ?doubleClicked: 双击击某项时,发射此信号; ?activated: 当用户激活index指定的项目时,发射此信号; ?entered: 当鼠标光标进入index指定的项目时,发射此信号; ?iconSizeChanged: 在视图可见时设置此图标大小时,发射此信号; ?indexesMoved: 在视图中移动索引时,发射此信号; ?pressed: 按下鼠标按钮时,发射此信号; ?viewportEntered: 当鼠标光标进入视图时,发射此信号。 ?

QListView类继承关系:

???测试QListView

使用QStandardItemModel作为QListView 所使用的模型,在QStandardItemModel中每个QStandardItem条目添加一个图标和文本。完整代码如下:

import sys,osfrom PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtCore import Qtfrom PyQt5.QtGui import QIcon, QStandardItem, QStandardItemModelfrom PyQt5.QtWidgets import (QApplication, QWidget, QListView,                             QLabel, QVBoxLayout) class DemoListView(QWidget):    def __init__(self, parent=None):        super(DemoListView, self).__init__(parent)                    # 设置窗口标题        self.setWindowTitle(\\\'实战PyQt5: QListView Demo!\\\')              # 设置窗口大小        self.resize(480, 360)              self.initUi()            def initUi(self):        vLayout = QVBoxLayout(self)                lv = QListView(self)         slm = QStandardItemModel()        self.sports = [            {\\\'img\\\':\\\'/images/basketball.wf\\\', \\\'title\\\':\\\'篮球\\\'},            {\\\'img\\\':\\\'/images/football.wf\\\', \\\'title\\\':\\\'足球\\\'},            {\\\'img\\\':\\\'/images/rugby-ball.wf\\\', \\\'title\\\':\\\'橄榄球\\\'},            {\\\'img\\\':\\\'/images/valley-ball.wf\\\', \\\'title\\\':\\\'排球\\\'}        ]                 for sport in self.sports:            item = QStandardItem(QIcon(os.path.dirname(__file__) + sport[\\\'img\\\']), sport[\\\'title\\\'])            slm.appendRow(item)                lv.setModel(slm)        lv.clicked.connect(self.onListViewClicked)        self.label = QLabel(self)                vLayout.addWidget(lv)        vLayout.addWidget(self.label)                self.setLayout(vLayout)                #设置选中第一行        lv.setCurrentIndex(slm.index(0, 0))        self.label.setText(\\\'当前选择为: \\\' + self.sports[0][\\\'title\\\'])            def onListViewClicked(self, index):        #显示选中的x信息        self.label.setText(\\\'当前选择为: \\\' + self.sports[index.row()][\\\'title\\\'])    if __name__ == \\\'__main__\\\':    app = QApplication(sys.argv)    window = DemoListView()    window.show()    sys.exit(app.exec())

运行结果如下图:

测试QListView

本文知识点 ??使用QStandardItemModel作为视图的模型; ?使用QStandItem为QStandardItemModel添加条目; ?为QStandItem条目添加一个图标和文字信息。

其它知识推荐

溜溜百科知识网——分享日常生活学习工作各类知识。 垃圾信息处理邮箱 tousu589@163.com
icp备案号 闽ICP备14012035号-2 互联网安全管理备案 不良信息举报平台 网站地图 Copyright 2023 www.6za.net All Rights Reserved