更改模型后重新调整 QTableView
readjust QTableView after changes to the model
我用的是PySide2==5.13.0
我有一个自定义的 QTableView。 QAction 调用下面的 remove 方法。一切正常,但 table 视图本身不会调整其尺寸(与 add 方法相同)。
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...
屏幕截图显示模型已正确处理(行已消失)。但是 table 视图本身也需要删除该行。
我相信是……小,我正在研究文档几个小时,但找不到解决这个问题的方法(还)。想法?
我在文档 beginInsertRows 中找到了解决方案。现在完全有道理。我需要将 beginRemoveRows() 和 endRemoveRows() 调用添加到我模型中的 removeRow 实现。
这里是文档中的相关细节,以防您好奇:
为可调整大小的数据结构提供接口的模型可以提供 insertRows() 、 removeRows() 、 insertColumns() 和 removeColumns() 的实现。实现这些功能时,重要的是在模型尺寸发生前后通知任何连接的视图:
insertRows() 实现必须在将新行插入数据结构之前调用 beginInsertRows(),然后立即调用 endInsertRows()。
removeRows() 实现必须在从数据结构中删除行之前调用 beginRemoveRows(),然后立即调用 endRemoveRows()。
...
我用的是PySide2==5.13.0
我有一个自定义的 QTableView。 QAction 调用下面的 remove 方法。一切正常,但 table 视图本身不会调整其尺寸(与 add 方法相同)。
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...
屏幕截图显示模型已正确处理(行已消失)。但是 table 视图本身也需要删除该行。
我相信是……小,我正在研究文档几个小时,但找不到解决这个问题的方法(还)。想法?
我在文档 beginInsertRows 中找到了解决方案。现在完全有道理。我需要将 beginRemoveRows() 和 endRemoveRows() 调用添加到我模型中的 removeRow 实现。
这里是文档中的相关细节,以防您好奇:
为可调整大小的数据结构提供接口的模型可以提供 insertRows() 、 removeRows() 、 insertColumns() 和 removeColumns() 的实现。实现这些功能时,重要的是在模型尺寸发生前后通知任何连接的视图:
insertRows() 实现必须在将新行插入数据结构之前调用 beginInsertRows(),然后立即调用 endInsertRows()。
removeRows() 实现必须在从数据结构中删除行之前调用 beginRemoveRows(),然后立即调用 endRemoveRows()。
...