【发布时间】:2020-06-16 14:13:08
【问题描述】:
我有一个 QModel 和 QListview,显示来自全局变量(列表)的项目。此列表正在通过向其中添加项目来更新。我有两个问题:
- 如何制作具有两列的列表视图并从两个列表中设置标题(例如 ['name', 'quantity'])?
- 如何安装信号,并在列表更新时发出信号以更新 Qlistview 和 QModel?并更新 Bothe 列
我想尝试
installEvent和@setter的列表,但不知道如何去。
from PyQt5 import QtWidgets, QtCore, QtGui
import sys
Mylist = ['Apple','Orange','lemon']
Quantity = ['5','2','7']
class Window(QtWidgets.QWidget):
def __init__(self, mylist, mylist2):
super(Window, self).__init__()
# mylist
self.mylist = mylist
self.mylist2 = mylist2
# layout
Layout = QtWidgets.QVBoxLayout(self)
# Model and listview
self.viewL = QtWidgets.QListView()
self.model = QtGui.QStandardItemModel()
"""Q1: How to make QStandardItemModel with a second column with header
e.g. headres['name', 'Quantity']
"""
# Add items
for Name in self.mylist:
item = QtGui.QStandardItem(Name)
item.setCheckable(True)
item.setCheckState(QtCore.Qt.Unchecked)
self.model.appendRow(item)
""" How to add from 2nd list to 2nd column
"""
# set the model
self.viewL.setModel(self.model)
#
button = QtWidgets.QPushButton('Add Item')
button.clicked.connect(self.onClick)
#
Layout.addWidget(self.viewL)
Layout.addWidget(button)
self.show()
def onClick(self, index):
self.mylist.append('mango')
self.mylist2.append('10')
""" How to emit a signal on on appending a list, then update the model and listview
"""
app=QtWidgets.QApplication(sys.argv)
window=Window(mylist=Mylist, mylist2=Quantity)
sys.exit(app.exec_())
【问题讨论】: