首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSortFilterProxyModel破坏了columnWidths

QSortFilterProxyModel破坏了columnWidths
EN

Stack Overflow用户
提问于 2013-03-27 14:40:18
回答 1查看 313关注 0票数 1

在通过QSortFilterProxyModel (以任意顺序)隐藏/删除某些列的QTableView中保存列宽度的标准实践是什么?请注意,我说的是在单个实例中隐藏和取消隐藏它们。

我尝试了许多方法(都很难看)来让它继续运行。我肯定做错了什么。

我已经看过QHeaderView::saveState()和QHeaderView::restoreState(),但除非我遗漏了什么,否则这真的只适用于从关闭到启动的保存。一旦以不同的顺序隐藏和取消隐藏列,这就会中断。

使用filterAcceptsColumn()可以很好地运行QSortFilterProxyModel。需要注意的是,当filterAcceptsColumn()对之前返回false的列返回true时。我运行invalidateFilter(),它在QTableView中绘制。但是,QTableView使用某个默认值(看起来是100)作为列宽度,而不是QSortFilterProxyModel隐藏该列之前的宽度。

想法?

EN

回答 1

Stack Overflow用户

发布于 2013-03-27 16:45:14

可以,请使用setSectionHidden()

通常,您应该尝试将与视图相关的代码(如在运行时显示/隐藏列)保留在模型之外。在我们的应用程序中,我们有QTableViewQHeaderView的子类,它们允许用户使用上下文菜单显示/隐藏列;当显示/隐藏它们时,列的宽度(以及位置)不会改变。

filterAcceptsColumn可以用于完全禁用主键、外键等列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15653155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档