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类派生的模型提供的数据 。
【qt listview详细用法 listview添加多列】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条目添加一个图标和文本 。完整代码如下:
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())
运行结果如下图:
- 清凉油的功效与作用 清凉油壮阳正确用法
- 有没有按照周的糖尿病食谱可以推荐 糖尿病一周餐详细食谱
- 清金化痰汤与桑白皮汤用法区别 清金益气汤方歌
- 氟康唑片治疗霉菌性***炎的用法用量是多少 霉菌性阴炎的口服药有什么药
- 尖锐湿疣用鬼臼毒素可以治愈吗 鬼臼毒素里面药签用法
- 超级详细的待产包清单 去医院待产需要准备哪些东西
- 六味地黄丸的用量用法 六味地黄丸方剂
- 血热调理的中药方子详细 清热调血汤歌诀
- 01克的布洛芬颗粒用法 小儿布洛芬颗粒
- 有啥有特色好喝靠谱的做法有详细配方介绍一下吗 破壁机五谷杂粮食谱
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
