QT ListView 列表显示组件笔记

23 篇文章 2 订阅
8 篇文章 0 订阅

新建一个应用

from PyQt5 import QtWidgets,QtCore,QtGui
import sys

app = QtWidgets.QApplication(sys.argv)

sys.exit(app.exec_())

新建一个窗口

# from PyQt5 import QtWidgets,QtCore,QtGui
# import sys

# app = QtWidgets.QApplication(sys.argv)

window = QtWidgets.QMainWindow()
window.show()

# sys.exit(app.exec_())

新建列表展示控件

# from PyQt5 import QtWidgets,QtCore,QtGui
# import sys

# app = QtWidgets.QApplication(sys.argv)

# window = QtWidgets.QMainWindow()
# window.resize(350, 250)

listView = QtWidgets.QListView(window)
listView.setGeometry(0, 0, 350, 250)

# window.show()

# sys.exit(app.exec_())

给列表添加数据,python中的数据字符串列表无法直接传递给QListView,需要借助模型传递,这里使用QStringListModle
相关文章:QT5知识:字符串列表QStringListModel
在这里插入图片描述

添加stringListModel,并添加了数据, 获取model数据

#from PyQt5 import QtWidgets,QtCore,QtGui
#import sys

#app = QtWidgets.QApplication(sys.argv)

#window = QtWidgets.QMainWindow()
#window.resize(350, 250)

#listView = QtWidgets.QListView(window)
#listView.setGeometry(0, 0, 350, 250)

list = ["ItemA", "ItemB", "ItemC"]
model = QtCore.QStringListModel()
model.setStringList(list)
print(model.stringList())
listView.setModel(model)

#window.show()

s#ys.exit(app.exec_())

添加数据还可以使用另外一种方式,在学习另一种添加方式前,我们先定义一个点击事件

#from PyQt5 import QtWidgets,QtCore,QtGui
#import sys

def lv_clicked(index):
    print(index.data())

#app = QtWidgets.QApplication(sys.argv)

#window = QtWidgets.QMainWindow()
#window.resize(350, 250)

#listView = QtWidgets.QListView(window)
#listView.setGeometry(0, 0, 350, 250)

#list = ["ItemA", "ItemB", "ItemC"]
#model = QtCore.QStringListModel()
#model.setStringList(list)
#print(model.stringList())
#listView.setModel(model)

listView.clicked.connect(lv_clicked)

#window.show()

#sys.exit(app.exec_())

每次点击列表时会打印选中的列表成员

接下来可以尝试删除列表成员

def lv_clicked(index):
    print(index.data())
    model.removeRow(0)

每次点击列表,最上面的成员就被删除
如果要删除选中的成员,应该可以猜出来吧

def lv_clicked(index):
    print(index.row())
    model.removeRow(index.row())

所以另外一种添加数据的方式就是使用insertRow(),查询这个命令构造,会发现和removeRow相同,只需要接受一个序号用来指定删除和添加的位置。那么添加的值如何指定?
这个命令会先插入一个空值,然后再给这个成员设置值

def lv_clicked(index):
    row = index.row()
    model.insertRow(row)
    index = model.index(row)
    print(index)
    model.setData(index, "aaa")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值