QSortFilterProxyModel filterAcceptsColumn не может установить новые данные индекса - PullRequest
1 голос
/ 02 апреля 2012

я использую QSortFilterProxyModel для фильтрации столбца, получаемого из модели QSqlQueryModel но потому, что метод filterAcceptsColumn является "полностью" У меня есть проблема, чтобы установить данные Qt :: UserRole в правильный индекс. как я могу преодолеть это?

    bool MiniSortFilterProxyModel::filterAcceptsColumn(int source_column, const QModelIndex& index) const
    {
        QVariant tmp ;
        if(source_column ==0)
        {

            setRowid(index.data(Qt::DisplayRole)); 
// here im getting compilation error 
//: error C2678: binary '=' : no operator found which takes a left-hand operand of type 'const QString' (or there is no acceptable conversion)
            m_rowId = index.model()->data(index,Qt::DisplayRole).toString();
            return false;
        }
        else if(source_column ==1)
        {
            setYTid(index.data(Qt::DisplayRole)); 
            return false;
        }
        else if(source_column ==2)
        {

            setNewData(index);
            return QSortFilterProxyModel::filterAcceptsColumn(source_column,index);
        }
        return false;
    }


    void MiniSortFilterProxyModel::setRowid(QVariant rowId) const 
    {
// here also compilation error:
        m_rowId = rowId.toString();
    }

    void MiniSortFilterProxyModel::setYTid(QVariant ytId) const 
    {
/ here also compilation error:      
m_ytId = ytId.toString();
    }

    void MiniSortFilterProxyModel::setNewData(QModelIndex& index) const 
    {
// here also compilation error:
//error C2511: 'void MiniSortFilterProxyModel::setNewData(QModelIndex &) const' : //overloaded member function not found in 'MiniSortFilterProxyModel'             
 QVariant data = m_rowId+"_"+m_ytId;
            index.model()->setData(index,data,Qt::UserRole);
    }

1 Ответ

1 голос
/ 02 апреля 2012

Быстрое и грязное исправление: объявите m_rowId как mutable

mutable QString m_rowId;

В любом случае, есть причина, если метод был объявлен как const в Qt API, поэтому убедитесь, что это единственное место, гдеВы можете назначить это значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...