【发布时间】:2018-04-10 18:45:41
【问题描述】:
我正在开发一个使用 PyQt 和 MongoDB 作为后端的应用程序。我的应用程序中有一个表 (QTableView) 应该填充来自 MongoDB 的数据,我想使用模型->视图架构。由于 Qt 没有 MongoDB 模型,我需要编写一个自定义模型。
这个数据目前(可以改变以适应这个问题)被组织成一个字典列表,像这样(实际数据更复杂):
[{"name":"some name","phone":"283891273218"}, {"name":"some other name","phone":"56958656556"}]
每个字典代表一行,字典的每个键是一列。经过几个小时的搜索,我几乎一无所获,代码是:
class CustomModel(QtCore.QAbstractTableModel):
def __init__(self, parent=None, *args):
super(CustomModel, self).__init__()
self.datatable = None
def update(self, dataIn):
print 'Updating Model'
self.datatable = dataIn
#print 'Datatable : {0}'.format(self.datatable)
def rowCount(self, parent=QtCore.QModelIndex()):
return len(self.datatable)
def columnCount(self, parent=QtCore.QModelIndex()):
return len(self.datatable[0])
def data(self, index, role=QtCore.Qt.DisplayRole):
if role == QtCore.Qt.DisplayRole:
i = index.row()
j = index.column()
#print self.datatable
else:
return QtCore.QVariant()
def flags(self, index):
return QtCore.Qt.ItemIsEnabled
如果我理解正确,方法data 应该用数据填充行和列,但我不知道该怎么做。此代码当前正在生成正确数量的行和列,但没有数据。
如果有任何帮助或建议,我将不胜感激。
【问题讨论】:
标签: model-view-controller pyqt pymongo