网站首页 > 技术文章 正文
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,os
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon, QStandardItem, QStandardItemModel
from 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.png', 'title':'篮球'},
{'img':'/images/football.png', 'title':'足球'},
{'img':'/images/rugby-ball.png', 'title':'橄榄球'},
{'img':'/images/valley-ball.png', '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())
运行结果如下图:
本文知识点
- 使用QStandardItemModel作为视图的模型;
- 使用QStandItem为QStandardItemModel添加条目;
- 为QStandItem条目添加一个图标和文字信息。
喜欢本文内容就关注,收藏,点赞,评论和转发。
- 上一篇: C++Qt开发——Mode View(模型视图)
- 下一篇: Qt自定义Model QT自定义数字键盘
猜你喜欢
- 2024-10-20 Qt 开发经验总结 qt软件开发
- 2024-10-20 Qt QTableWidget用法总结 qtablewidget qtableview
- 2024-10-20 实战PyQt5: 068-MV框架中的项视图部件
- 2024-10-20 Qt开发经验小技巧231-235 qt开发入门简介
- 2024-10-20 Python+PyQt5进阶(5) pyqt5 django
- 2024-10-20 Qt项目升级到Qt6经验总结 qt更新界面
- 2024-10-20 QTableWidget表格中增删数据 qtablewidget清空表格
- 2024-10-20 C/C++ Qt StatusBar 底部状态栏应用
- 2024-10-20 Qt的常用控件 qt控件详解
- 2024-10-20 Python PyQt5通过QTableWidget表格控件操作SQLite数据库
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)