我使用PyQt编写QTableView和qabstractemodel的自定义实现。我想创建一个按钮,通过调用重新实现的rowRemoved
事件处理程序从TableModel中删除一行。由于某些原因,model试图为已删除的行创建行标题,这会导致崩溃。在
下面是removeRows
、headerData
和{self.alignment.sequences
是数据列表,每个头都填充sequences.name
:
def removeRows(self, position, rows, parent=QModelIndex()):
print "removeRows called"
self.beginRemoveRows(parent, position, position + rows -1)
for i in range(int(rows)):
self.alignment.sequences.pop(position)
self.endRemoveRows()
def headerData(self, col, orientation, role):
if orientation == Qt.Horizontal and role == Qt.DisplayRole:
return QVariant(str(col))
elif orientation == Qt.Vertical and role == Qt.DisplayRole:
try:
return self.alignment.sequences[col].name
except:
print "Exception: no header with index %s" % col
def rowCount(self, parent):
return len(self.alignment.sequences)
由于某种原因,我的应用程序崩溃了。它的执行导致异常,在headerData
中捕获:
GUI为头创建空间,对应于删除的行,但显然无法填充它。在
你为什么没有适当的反应?谢谢。在
简单看一下,您的数据存储和标题似乎来自同一个变量。所以您可能已经从remove Row中删除了一个标题。如果您将它们作为单独的变量保存,那么您的数据操作根本不会影响您的头。在
另一个要做的事情是除去Try,除非有一个泛型异常。这样你就可以知道你得到了什么样的错误。在
相关问题 更多 >
编程相关推荐