为什么在使用Wt列表模型时必须在data
和index
方法中指定一列?
The WAbstractListModel doc说:“抽象列表模型专门用于一维列表的WAbstractItemModel(即具有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是否仅仅是这种不完整的结果?或者是否有一些概念上的理由需要在此处指定列号?
答案 0 :(得分:1)
WAbstractListModel不会增加太多(除了表达意图)。
项目模型和视图已经模仿Qt中的项目和 在很多方面与Qt提供的相同。例如,参见 http://doc.qt.io/qt-5/qstringlistmodel.html
该Qt链接显示我的两个建议都在那里实施。
QAbstractListModel::index不要求您指定列:
Principal
而且,QStringListModel::data没有列参数:
QModelIndex QAbstractListModel::index(int row, int column = 0, const QModelIndex & parent = QModelIndex()) const
所以,我将这归结为“不完整”。