我有一个带有可见标题的表格视图。为了使用排序功能,我使用QSortFilterProxyModel作为包装模型。我还希望我的表头能够伸展以适应表格宽度:
horizontal_header.setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
它可以工作直到按任何列(对项目进行排序)。执行此操作后,标头缩小回其默认大小。但是,如果我在单击标题之前向表中添加一行,则标题大小保持不变。所以,这是问题测试案例:
使用拉伸标题初始化的表
按标题可以对事物进行排序
标题缩小
TC2:
注意:如果我不使用QSortFilterProxyModel
,则不会发生这种情况答案 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)
如果模型
中没有项目,则想要禁用排序