QListView简介QListView列表视图可以用来以列表的形式来展示数据 。在Qt中使用Model-View结构来处理数据与视图之间的关系,Model负责数据的存取,View负责数据的展示, 二者之间数据的交互则是通过委托(delegate)来实现 。
QT提供了一些现成的models用于处理数据项:
- QStringListModel 用于存储简单的QString列表;
- StandardItemModel 管理复杂的树型结构数据项,每项都可以包含任意数据;
- QDirModel 提供本地文件系统中的文件与目录信息;
- QSqlQueryModel, QSqlTableModel,QSqlRelationTableModel用来访问数据库;
QListView常用方法:
- setModel(): 用来设置View所关联的Model,可以使用Python原生的list作为数据源Model;
- selectedItem(): 选中Model的条目;
- isSelected(): 判断Model中的某条目是否被选中;
- setViewMode(): 设置视图模式 。(ListMode: 条目从上到下布局,小尺寸显示,IconMode: 条目从左到右布局,大尺寸显示)
- clicked: 单击某项时,发射此信号;
- doubleClicked: 双击击某项时,发射此信号;
- activated: 当用户激活index指定的项目时,发射此信号;
- entered: 当鼠标光标进入index指定的项目时,发射此信号;
- iconSizeChanged: 在视图可见时设置此图标大小时,发射此信号;
- indexesMoved: 在视图中移动索引时,发射此信号;
- pressed: 按下鼠标按钮时,发射此信号;
- viewportEntered: 当鼠标光标进入视图时,发射此信号 。
测试QListView使用QStandardItemModel作为QListView 所使用的模型,在QStandardItemModel中每个QStandardItem条目添加一个图标和文本 。完整代码如下:
importsys,osfromPyQt5importQtCore,QtGui,QtWidgetsfromPyQt5.QtCoreimportQtfromPyQt5.QtGuiimportQIcon,QStandardItem,QStandardItemModelfromPyQt5.QtWidgetsimport(QApplication,QWidget,QListView,QLabel,QVBoxLayout)classDemoListView(QWidget):def__init__(self,parent=None):super(DemoListView,self).__init__(parent)#设置窗口标题self.setWindowTitle('实战PyQt5:QListViewDemo!')#设置窗口大小self.resize(480,360)self.initUi()definitUi(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':'排球'}]forsportinself.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'])defonListViewClicked(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条目添加一个图标和文字信息 。
推荐阅读
- 详细解析TIKTOK如何利用海外CPS+工具 0粉丝轻松变现月入过万
- 无尽战记佩特拉怎么用 无尽战记佩特拉用法详解
- 备份苹果手机短信的详细4大步骤 苹果手机短信如何备份
- 如何快速练出腹肌
- 蒸馒头的详细制作方法
- 足球经理2022侵略属性怎么用 足球经理2022侵略属性用法
- 谷歌分享Pixel6 Pixel6Pro相机详细信息
- 公司资质转让意味着什么 资质剥离转让详细流程
- 三星GalaxyA52S5G智能手机发布前详细介绍
- 华为在美提起诉讼是怎么回事华为在美提起诉讼详细解析