я использую 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);
}