Qt 中具有单个模型的表格和列表视图

Posted

技术标签:

【中文标题】Qt 中具有单个模型的表格和列表视图【英文标题】:Table and List view with single Model in Qt 【发布时间】:2008-09-19 15:24:09 【问题描述】:

我有一个 2D 模型,其中每一行代表视频中的一帧,每一列代表一个对象。对象在每一帧上可以有不同的状态,这存储在模型中。然后我有一个显示这些数据的 QTableView。该模型具有标题数据,因此每一行都有一个像“帧 k”这样的标题,每列都有一个像“对象 n”这样的标题。此表是可编辑的。但我希望用户以另一种方式编辑它。另一种方式是显示单个帧的图形视图。图形视图下方是代表每一帧的列表(水平方向)。这样,用户可以单击列表中的一个框架,图形视图现在会显示该框架。

问题在于列表显示模型中每一行的第一列。我想要它做的是显示每一行的标题(所以列表显示“第 1 帧、第 2 帧等”)。有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

两种可能的解决方案:

    尝试使用代理模型(QAbstractProxyModel 的子类),它将行标题作为单行中的列进行访问。这不是微不足道的,因为代理模型将原始模型视为标头的数据显示为数据。

    显示模型的第二个 2D 视图,但隐藏除列标题之外的所有内容。由于您的帧是行,因此您需要一个代理模型来在行和列之间进行转置。

免责声明:我实际上并没有实施任何解决方案。

【讨论】:

以上是关于Qt 中具有单个模型的表格和列表视图的主要内容,如果未能解决你的问题,请参考以下文章

QListView 仅在视图中显示单个项目

如何在相对布局中添加固定标题和滚动视图表行?

基于单个数据源更新多个 Qt 模型

如何从 postgresql 视图表中获取要显示的对象列表

在一个视图表中对多个模型进行排序

如何将两个不同的ListAPIView转换为单个ModelViewSet