Python 更改模型后重新调整QTableView

Python 更改模型后重新调整QTableView,python,qtableview,pyside2,Python,Qtableview,Pyside2,我使用PySide2==5.13.0 我有一个自定义的QTableView。QAction调用下面的remove方法。所有这些都可以正常工作,但表视图本身不调整其尺寸(与add方法相同) 屏幕热显示模型已正确处理(行已消失)。但是表视图本身也需要删除该行 我相信这是一件小事,我研究了几个小时的文件,但找不到解决这个问题的办法。想法?我在文档中找到了解决方案。现在完全有道理了。我需要在模型中向removeRow实现添加beginRemoveRows()和endRemoveRows()调用 以下是

我使用PySide2==5.13.0

我有一个自定义的QTableView。QAction调用下面的remove方法。所有这些都可以正常工作,但表视图本身不调整其尺寸(与add方法相同)

屏幕热显示模型已正确处理(行已消失)。但是表视图本身也需要删除该行


我相信这是一件小事,我研究了几个小时的文件,但找不到解决这个问题的办法。想法?

我在文档中找到了解决方案。现在完全有道理了。我需要在模型中向removeRow实现添加beginRemoveRows()和endRemoveRows()调用

以下是文档中的相关详细信息,以防您好奇:

为可调整大小的数据结构提供接口的模型可以提供insertRows()、removeRows()、insertColumns()和removeColumns()的实现。在实现这些功能时,重要的是在模型尺寸发生更改之前和之后通知所有连接的视图:

  • insertRows()实现必须在将新行插入数据结构之前调用beginInsertRows(),然后立即调用endInsertRows()

  • removeRows()实现必须在从数据结构中删除行之前调用beginRemoveRows(),然后立即调用endRemoveRows()


下一次,您必须提供答案,因为您的答案是针对可能由模型以外的问题生成的特定案例的解决方案。
def remove(self, row):
    print(f'remove {row}')
    self.model.removeRow(row)

    # I tried a few of the methods
    self.table_view.resizeColumnsToContents()
    self.table_view.restoreGeometry()
    self.table_view.adjustSize()  # resize...