我在表视图中显示来自QSqlModel的查询。 e.G。
SELECT id, name FROM person;
我不想在视图中显示id,但是当用户点击该视图中的一行时我需要id。
Qt中是否有模型,它允许我只在视图中显示指定的列,但也提供对不可见的列的访问?
我以前通过隐藏列来实现它,例如:
ui->myview->setColumnHidden( 0, true );
但可能有更好的解决方案。
答案 0 :(得分:2)
由于OP修改了使用QTableView
排除的问题,唯一可行的方法是创建一个派生自QSortFilterProxyModel
的新类。可以覆盖filterAcceptsColumn
方法
可以找到关于班级QSortFilterProxyModel
的文档here
QSortFilterProxyModel可用于对项目进行排序,过滤掉项目或两者。该模型通过将其提供的模型索引映射到对应于不同位置的新索引来转换源模型的结构,以供要使用的视图。这种方法允许在视图关注的情况下重构给定的源模型,而不需要对基础数据进行任何转换,并且不会在内存中复制数据。
您还必须覆盖MapToSource
和SourceToMap
。这个StackOverflow的answer