0

フラグ仮想メソッドにベース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のアイテムは非アクティブになります。なんで?

4

1 に答える 1

1

インデックスをソース モデルのインデックスにマップするとどうなりますか?

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

私の見解では、インデックスは同じモデルに関連していないため、無効です

于 2011-12-02T12:46:31.667 に答える