我正在使用 PyQt4 和 python 2.7.9。我有一个包含来自 Oracle 数据库的数据的 QTreeView。代码是这样的:
model = QStandardItemModel(0,1)
self.treeMedia.setModel(model)
for rowalb in self.SELECT_TREE_ALBUM(codus):
nodeItem = QStandardItem(str(rowalb[1]).decode('utf-8'))
for rowph in self.SELECT_TREE_PHOTO(int(rowalb[0])):
childItem = QStandardItem(str(rowph[0]))
childItem.setEditable(False)
nodeItem.insertRows(0, [childItem])
nodeItem.setEditable(False)
model.appendRow(nodeItem)
model.setHorizontalHeaderLabels(['Data'])
SELECT_TREE_ALBUM(codus是专辑所有者的id)和SELECT_TREE_PHOTO是从数据库返回数据的函数。rowalb 1是专辑的名字,rowalb[0]是ID,rowalb[0]用来获取此相册的照片。图片显示此视图:
我想使用双击事件获取 childItem 数据(例如 1491475964461012、1491475821127693、1491475631127712、1491475141127761 或 1480407552234520)。我试图将这些代码放入构造函数中:
self.treeMedia.doubleClicked.connect(self.treeMedia_doubleClicked)
之后我添加了功能:
def treeMedia_doubleClicked(self,index):
item = self.treeMedia.model().item(index.row(),index.column())
strData = item.data(0).toPyObject()
#self.treeMedia.currentIndex()
print('' + str(strData))
但有时我会看到 nodeItem 信息(例如“terror”或“fotos de perfil”)和其他一些我收到此错误:“AttributeError: 'NoneType' object has no attribute 'data'”。可能是什么问题?是填写 qtreeview 的问题吗?还是使用索引时双击事件功能的问题?请帮我。提前致谢。