为 Wt 列表模型中的项目编制索引

Indexing items in a Wt List Model

本文关键字:项目 索引 Wt 列表 模型      更新时间:2023-10-16

为什么在使用 Wt 列表模型时必须在 dataindex 方法中指定一列?

WAbstractListModel 文档说:"抽象列表模型专门用于一维列表(即具有 1 列且没有子列表的模型)。

WAbstractListModel::index原型是index (int row, int column, const WModelIndex &parent=WModelIndex()). 也拥有index (int row, const WModelIndex &parent=WModelIndex())不是很有意义吗?

同样的情况也发生在WStringListModel::data,其原型是data (int row, int column, int role=DisplayRole, const WModelIndex &parent=WModelIndex())? WStringListModel(或WAbstractListModel的任何实现)提供一个方法data (int row, int role=DisplayRole, const WModelIndex &parent=WModelIndex())没有意义吗?

我意识到Wt在很多方面都是不完整的。 列表模型缺少一维 API 仅仅是这种不完整的结果吗? 还是有一些概念上的原因要求在此处指定列号?

Wt developer的回应:

WAbstractListModel并没有增加太多(除了表达意图)。

项目模型和视图已根据Qt中的模型和视图建模,并且 在大多数方面与Qt提供的相同。参见示例 http://doc.qt.io/qt-5/qstringlistmodel.html

Qt链接表明我的两个建议都在那里实施。

QAbstractListModel::index 不要求您指定列:

QModelIndex QAbstractListModel::index(int row, int column = 0, const QModelIndex & parent = QModelIndex()) const

而且,QStringListModel::d ata 没有列参数:

QVariant QStringListModel::data(const QModelIndex & index, int role) const

所以,我把它归结为"不完整"。