对于无效的QModelIndex,重载的QAbstractItemModel :: flags应该返回什么?

时间:2019-03-31 10:53:20

标签: c++ qt qabstractitemmodel

我正在阅读有关模型/视图体系结构https://doc.qt.io/qt-5/model-view-programming.html#making-the-model-editable的QT文档,并看到一个重载QAbstractItemModel :: flags方法的示例,该方法为无效索引返回Qt::ItemIsEnabled

Qt::ItemFlags StringListModel::flags(const QModelIndex &index) const
{
    if (!index.isValid())
        return Qt::ItemIsEnabled;

    return QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
}

因此,如果索引无效,即可以有负数行,我们仍然认为用户可以与其进行交互。这种逻辑有什么意义吗?对我来说,在这种情况下返回Qt::NoItemFlags可能更合逻辑

1 个答案:

答案 0 :(得分:1)

您需要的是Qt::NoItemFlagshttps://doc.qt.io/Qt-5/qt.html#ItemFlag-enum

这是标志枚举的默认值(因为它是枚举中的第一项)。您也可以将其写为return {};,它将为您提供相同的Qt::NoItemFlags