gpt4 book ai didi

qt - QAbstractItemModel::index(row, column, parent) 是否应该检查无效输入?

转载 作者:行者123 更新时间:2023-12-04 18:08:28 24 4
gpt4 key购买 nike

子类化 QAbstractItemModel,我已经根据需要实现了我自己的 index() 方法。我目前正在检查有效输入,但我想知道这是否正确。我想知道为不存在的数据创建索引是否有效?也许在插入行或列时?

代码:

QModelIndex LicenseDataModel::index(int row, int column, const QModelIndex & /*parent*/) const
{
/// TODO: Is this necessary? Should we avoid creating invalid indexes? Or could this
/// be a bug?
if (validRowColumn(row, column))
return createIndex(row, column);
return QModelIndex();
}

最佳答案

[如果有人有更好的答案,我会很乐意接受。 ]

查看 QListWidget 的来源,似乎检查输入是 Qt 自己做的:

QModelIndex QListModel::index(int row, int column, const QModelIndex &parent) const
{
if (hasIndex(row, column, parent))
return createIndex(row, column, items.at(row));
return QModelIndex();
}

看来我也不知道 hasIndex()这将做我的 validRowColumn()方法。
bool QAbstractItemModel::hasIndex(int row, int column, const QModelIndex &parent) const
{
if (row < 0 || column < 0)
return false;
return row < rowCount(parent) && column < columnCount(parent);
}

就此而言,我不确定为什么文档使用 index.isValid()随处可见 hasIndex(index.row(), index.column(), index.parent())会更合适。然后,我确定是 hasIndex(QModelIndex &)方法将被添加。 hasIndex()做与 QModelIndex::isValid() 相同的检查和更多:
inline bool isValid() const { return (r >= 0) && (c >= 0) && (m != 0); }

关于qt - QAbstractItemModel::index(row, column, parent) 是否应该检查无效输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20530638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com