当前位置:首页 > 渗透破解 > 正文内容

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

访客3年前 (2022-01-05)渗透破解544

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条目添加一个图标和文本。完整代码如下:

importsys,os fromPyQt5importQtCore,QtGui,QtWidgets fromPyQt5.QtCoreimportQt fromPyQt5.QtGuiimportQIcon,QStandardItem,QStandardItemModel fromPyQt5.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条目添加一个图标和文字信息。

www.gj *** g.com

扫描二维码推送至手机访问。

版权声明:本文由黑客技术发布,如需转载请注明出处。

本文链接:http://w-123.com/102517.html

“listview添加多列(qt listview详细用法)” 的相关文章

DNS 曝高危漏洞,影响数百万物联网设备

近日,Nozomi Networks发出警告,uClibc库的域名系统 (DNS) 组件中存在一个高危漏洞,编号为CVE-2022-05-02,该漏洞将影响所有版本uClibc-ng库的域名系统(DNS),因此,数百万台使用uClibc库的物联网设备都也将受到影响。 资料显示,uClibc库专门为...

欧盟将公布新法律 迫使大型科技公司对非法内容进行监管

欧盟准备在周五公布一项具有里程碑意义的法律,该法律将迫使大型科技公司更积极地监管其平台的非法内容,这是监管机构遏制大型科技集团权力的最新举措。 据四位知情人士透露,《数字服务法》(DSA)将禁止根据用户的宗教信仰、性别或性取向对用户进行分类和内容定位。DSA是一个立法方案,首次为大型科技公司如何保证...

全新 SideWalk 后门攻击针对美国电脑零售业务

一家位于美国的电脑零售公司成为SideWalk攻击的目标,这种攻击以前从未被发现,是一个中国高级黑客组织最近开展的活动一部分,该组织主要以专门针对东亚和东南亚实体的网络攻击而闻名。 斯洛伐克网络安全公司ESET在持续跟踪名为SparklingGoblin的高级威胁过程当中发现了这个攻击,被认为与Wi...

微软观察到许多攻击者开始对 Log4j 漏洞加以利用

12月14日,Apache Log4j 2团队发布了Log4j 2.16.0以修复这些漏洞。在补丁应用之前,所有现有的Apache Log4j运行服务器都将成为黑客的潜在目标。微软最近更新了预防、检测和解决Log4j 2漏洞的指南,向客户给出了解决和预防方案。 据微软称,攻击者正在积极利用Log4j...

苹果公司发出警告后 Pegasus 黑客受害者陆续浮出水面

NSO的Pegasus(飞马)iPhone黑客是今年最重要的科技争议之一。过去几个月的几份报告揭示了一个令人难以置信的复杂的iPhone黑客攻击活动。Pegasus允许国家行为者通过使用零日攻击来监视使用iPhone的特定人物目标。 受害者甚至不需要点击信息中的链接来安装PegASUS间谍软件程序...

太平洋城市银行遭遇勒索软件 AvosLocker 攻击

上个月,美国主要韩裔美国人社区金融服务提供商之一的太平洋城市银行(Pacific City Bank,PCB)遇到了勒索软件攻击事件。 该银行向其客户发送信函,告知他们2021年8月30日发现的一个安全问题,并称这个问题已经解决。 2021年9月7日,PCB完成了对此事件的内部调查,发现勒索软件犯罪...

评论列表

鸠骨沐白
2年前 (2022-07-06)

ked.connect(self.onListViewClicked)self.label=QLabel(self)vLayout.addWidget(lv)vLayout.addWidget(

寻妄征棹
2年前 (2022-07-06)

rts:item=QStandardItem(QIcon(os.path.dirname(__file__)+sport['img']),sport['title'])slm.appendRow(ite

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。