Qt不显示Model的所有字段

时间:2014-09-08 14:19:55

标签: qt

我在表视图中显示来自QSqlModel的查询。 e.G。

SELECT id, name FROM person;

我不想在视图中显示id,但是当用户点击该视图中的一行时我需要id。

Qt中是否有模型,它允许我只在视图中显示指定的列,但也提供对不可见的列的访问?

我以前通过隐藏列来实现它,例如:

ui->myview->setColumnHidden( 0, true );

但可能有更好的解决方案。

1 个答案:

答案 0 :(得分:2)

由于OP修改了使用QTableView排除的问题,唯一可行的方法是创建一个派生自QSortFilterProxyModel的新类。可以覆盖filterAcceptsColumn方法

可以找到关于班级QSortFilterProxyModel的文档here

  

QSortFilterProxyModel可用于对项目进行排序,过滤掉项目或两者。该模型通过将其提供的模型索引映射到对应于不同位置的新索引来转换源模型的结构,以供要使用的视图。这种方法允许在视图关注的情况下重构给定的源模型,而不需要对基础数据进行任何转换,并且不会在内存中复制数据。

您还必须覆盖MapToSourceSourceToMap。这个StackOverflow的answer

中有一个很好的使用示例