PyQt5:QSortFilterProxyModel导致表视图头重置其部分调整大小模式

时间:2018-05-07 19:20:15

标签: python qt pyqt5

我有一个带有可见标题的表格视图。为了使用排序功能,我使用QSortFilterProxyModel作为包装模型。我还希望我的表头能够伸展以适应表格宽度:

 horizontal_header.setSectionResizeMode(QtWidgets.QHeaderView.Stretch)

它可以工作直到按任何列(对项目进行排序)。执行此操作后,标头缩小回其默认大小。但是,如果我在单击标题之前向表中添加一行,则标题大小保持不变。所以,这是问题测试案例:

  1. 使用拉伸标题初始化的表

  2. 按标题可以对事物进行排序

  3. 标题缩小

  4. TC2:

    1. 使用拉伸标题初始化的表
    2. 在表格中添加一行
    3. 按标题排序
    4. 标题不缩小。
    5. 注意:如果我不使用QSortFilterProxyModel

      ,则不会发生这种情况

1 个答案:

答案 0 :(得分:0)

我知道我没有为此发布最小的示例,但是对于任何理解我的问题且面对同一个问题的人来说,我是如何设法修复它的: 只需继承QSortFilterProxyModel并覆盖sort()方法:

class MySortModel(QSortFilterProxyModel):
    def sort(self, *args, **kwargs):
        # check that there is no data to sort, if so - do not sort
        if self.sourceModel().rowCount(QModelIndex()) > 0:
            super().sort(*args, **kwargs)

如果模型

中没有项目,则想要禁用排序