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常用方法:
tmodel(): 用来设置view所关联的model,可以使用python原生的list作为数据源model;lecteditem(): 选中model的条目;islected(): 判断model中的某条目是否被选中;tviewmode(): 设置视图模式。(listmode: 条目从上到下布局,小尺寸显示, iconmode: 条目从左到右布局,大尺寸显示)qlistview常用信号:
clicked: 单击某项时,发射此信号;doubleclicked: 双击击某项时,发射此信号;activa中国人民大学苏州ted: 当用户激活index指定的项目时,发射此信号;entered: 当鼠标光标进入index指定的项目时,发射此信号;iconsizechanged: 在视图可见时设置此图标大小时,发射此信号;indexesmoved: 在视图中移动索引时,发射此信号;presd: 按下鼠标按钮时,发射此信号;viewportentered: 当魏襄王鼠标光标进入视图时,发射此信号。qlistview类继承关系:
使用qstandarditemmodel作为qlistview 所使用的模型,在qstandarditemmodel中每个qstandarditem条目添加一个图标和文本。完整代码如下:
importsys,osfrompyqt5importqtc网络歌曲2010ore,qtgui,qtwidgetsfrompyqt5.qtcoreimportqtfrompy山西省简称qt5.qtguiimportqicon,qstandarditem,qstandarditemmodelfrompyqt5.qtwidgetsimport(qapplication,qwidget,qlistview,qlabel,qvboxlayout)classdemolistview(qwidget):def__init__(lf,parent=none):super(demolistview,lf).__init__(parent)#设置窗口标题lf.twindowtitle('实战pyqt5:qlistviewdemo!')#设置窗口大小lf.resize(480,360)lf.initui()definitui(lf):vlayout=qvboxlayout(lf)lv=qlist龙拳小子 电影view(lf)slm=qstandarditemmodel()lf.sports=[{'img':'/images/basketball.png','title':'篮球'},{'img':'/images/football.png','title':'足球'},{'img':'/images/rugby-ball.png','title':'橄榄球'},{'img':'/images/valley-ball.png','title':'排球'}]forsportinlf.sports:item=qstandarditem(qicon(os.path.dirname(__file__)+sport['img']),sport['title'])slm.appendrow(item)lv.tmodel(slm)lv.clicked.connect(lf.onlistviewclicked)lf.label=qlabel(lf)vlayout.addwidget(lv)vlayout.addwidget(lf.label)lf.tlayout(vlayout)#设置选中第一行lv.tcurrentindex(slm.index(0,0))lf.label.ttext('当前选择为:'+lf.sports[0]['title'])defonlistviewclicked(lf,index):#显示选中的x信息lf.label.ttext('当前选择为:'+lf.sports[index.row()]['title'])if__name__=='__main__':app=qapplication(sys.argv)window=demolistview()window.show()sys.exit(app.exec())
运行结果如下图:
测试qlistview
本文发布于:2023-04-05 20:56:10,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/4ce4449947f689185f2a3b66addcf282.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:qt listview详细用法(listview添加多列).doc
本文 PDF 下载地址:qt listview详细用法(listview添加多列).pdf
留言与评论(共有 0 条评论) |