Возврат флагов через исходную модель делает мои элементы неактивными (выделены серым цветом) - PullRequest
0 голосов
/ 02 декабря 2011

В моей прокси-модели с базой QSortFilterProxyModel в флажках виртуальный метод:

Qt::ItemFlags File_List_Proxy::flags(const QModelIndex& index) const
{
    if(index.isValid())
    {
        return QAbstractItemModel::flags(index) | 
            Qt::ItemIsUserCheckable |
            Qt::ItemIsSelectable;
    }
    else
    {
        return Qt::NoItemFlags;
    }
}

Если функция выглядит так, как указано выше (ИДЕНТИЧНО для версии модели ... просто скопированои вставил) тогда элементы отображаются корректно.Но если я изменю def этого метода на использование sourceModel () :

Qt::ItemFlags File_List_Proxy::flags(const QModelIndex& index) const
{
    return sourceModel()->flags(index);
}

..., тогда элементы в моем ListView неактивны.Почему?

1 Ответ

1 голос
/ 02 декабря 2011

Что произойдет, если вы сопоставите индекс с индексом исходной модели?

Qt::ItemFlags File_List_Proxy::flags(const QModelIndex& index) const
{
    return sourceModel()->flags(this->mapToSource(index));
}

Поскольку, с моей точки зрения, индекс не связан с той же моделью, поэтому он недопустим

...