在通过QSortFilterProxyModel (以任意顺序)隐藏/删除某些列的QTableView中保存列宽度的标准实践是什么?请注意,我说的是在单个实例中隐藏和取消隐藏它们。
我尝试了许多方法(都很难看)来让它继续运行。我肯定做错了什么。
我已经看过QHeaderView::saveState()和QHeaderView::restoreState(),但除非我遗漏了什么,否则这真的只适用于从关闭到启动的保存。一旦以不同的顺序隐藏和取消隐藏列,这就会中断。
使用filterAcceptsColumn()可以很好地运行QSortFilterProxyModel。需要注意的是,当filterAcceptsColumn()对之前返回false的列返回true时。我运行invalidateFilter(),它在QTableView中绘制。但是,QTableView使用某个默认值(看起来是100)作为列宽度,而不是QSortFilterProxyModel隐藏该列之前的宽度。
想法?
发布于 2013-03-27 16:45:14
可以,请使用setSectionHidden()。
通常,您应该尝试将与视图相关的代码(如在运行时显示/隐藏列)保留在模型之外。在我们的应用程序中,我们有QTableView和QHeaderView的子类,它们允许用户使用上下文菜单显示/隐藏列;当显示/隐藏它们时,列的宽度(以及位置)不会改变。
filterAcceptsColumn可以用于完全禁用主键、外键等列。
https://stackoverflow.com/questions/15653155
复制相似问题