对于无效的 QModelIndex,应该重载什么 QAbstractItemModel::flags return?
What should overloaded QAbstractItemModel::flags return for non valid QModelIndex?
我正在阅读 model/view 体系结构的 QT 文档 https://doc.qt.io/qt-5/model-view-programming.html#making-the-model-editable 并查看重载 QAbstractItemModel::flags 方法的示例 returns Qt::ItemIsEnabled
无效指数:
Qt::ItemFlags StringListModel::flags(const QModelIndex &index) const
{
if (!index.isValid())
return Qt::ItemIsEnabled;
return QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
}
所以,如果索引无效,即可以有负行,我们仍然认为用户可以与之交互。这种逻辑有道理吗?对我来说,在那种情况下返回 Qt::NoItemFlags
可能更符合逻辑
您需要的是Qt::NoItemFlags
:https://doc.qt.io/Qt-5/qt.html#ItemFlag-enum.
这是标志枚举的默认值(因为它是枚举中的第一项)。你也可以把它写成 return {};
,它会给你同样的 Qt::NoItemFlags
.
我正在阅读 model/view 体系结构的 QT 文档 https://doc.qt.io/qt-5/model-view-programming.html#making-the-model-editable 并查看重载 QAbstractItemModel::flags 方法的示例 returns Qt::ItemIsEnabled
无效指数:
Qt::ItemFlags StringListModel::flags(const QModelIndex &index) const
{
if (!index.isValid())
return Qt::ItemIsEnabled;
return QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
}
所以,如果索引无效,即可以有负行,我们仍然认为用户可以与之交互。这种逻辑有道理吗?对我来说,在那种情况下返回 Qt::NoItemFlags
可能更符合逻辑
您需要的是Qt::NoItemFlags
:https://doc.qt.io/Qt-5/qt.html#ItemFlag-enum.
这是标志枚举的默认值(因为它是枚举中的第一项)。你也可以把它写成 return {};
,它会给你同样的 Qt::NoItemFlags
.