更改模型后重新调整 QTableView

Posted

技术标签:

【中文标题】更改模型后重新调整 QTableView【英文标题】:readjust QTableView after changes to the model 【发布时间】:2019-09-12 15:40:57 【问题描述】:

我使用 PySide2==5.13.0

我有一个自定义的 QTableView。 QAction 调用下面的 remove 方法。一切正常,但表格视图本身不会调整其尺寸(与 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...

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

我相信是的。小,我正在研究文档几个小时,但找不到这个问题的解决方案(还)。想法?

【问题讨论】:

【参考方案1】:

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

如果您好奇,请查看文档中的相关详细信息:

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

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

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

...

【讨论】:

对于下一个场合,您必须提供minimal reproducible example,因为您的答案是针对可能由模型以外的问题产生的特定案例的解决方案。

以上是关于更改模型后重新调整 QTableView的主要内容,如果未能解决你的问题,请参考以下文章

更改方向后iOS8无法重新调整模态表单的大小

在 Heroku 上,在实例已经使用更改的模型代码重新启动后,Django syncdb / South 迁移是不是存在危险?

使用 JavaScript 更改 Highcharts 的高度。默认情况下,仅在窗口重新调整大小时重新调整大小

您如何在合并的更改之上重新调整当前分支的更改?

当模型编辑器中的模型更改时重新创建 NSManagedObject 子类

重新调整尺寸时更改设计集合视图单元格