【发布时间】:2018-03-19 10:03:20
【问题描述】:
当使用QAbstractTableModel 填充时,我希望能够设置combobox 的itemData。但是,我只能从模型的data 方法中返回一个字符串。
通常,当不使用模型时,可以这样执行:
# Set text and data
combobox.addItem('Some text', 'some item data')
# Retrieve data from selected
item_data = combobox.itemData(combobox.currentIndex())
如何做到这一点,但使用QAbstractTableModel?
我有一个combobox,我将模型设置为:
model = ProjectTableModel(projects)
combobox.setModel(model)
我的模特:
class ProjectTableModel(QtCore.QAbstractTableModel):
def __init__(self, projects=[], parent=None):
QtCore.QAbstractTableModel.__init__(self, parent)
self._projects = projects
def rowCount(self, parent):
return len(self._projects)
def columnCount(self, parent):
return 2
def data(self, index, role):
row = index.row()
column = index.column()
if role == QtCore.Qt.DisplayRole and column == 0:
project = self._projects[row]
name = project.name()
id = project.id() # <----- how to add this as itemData?
return name
【问题讨论】:
标签: python pyqt4 pyside pyqt5 pyside2