Как установить данные (Qt :: UserRole) в столбец QSqlQueryModel? - PullRequest
1 голос
/ 02 февраля 2012

У меня есть QSqlQueryModel, который обрабатывает данные, я пытаюсь установить Qt :: UserRole в столбец, но я не могу понять, как это сделать, я реализовал метод данных: в основном я хочу скрыть Qt :: DisplayRolendex.column () 4 и установите его в Qt :: UserRole

   QVariant MyListSqlModel::data(const QModelIndex &index, int role) const
    {
        QVariant value = QSqlQueryModel::data(index, role);
     QVariant valueEmpty = "";
      int j = index.column();
        if (value.isValid() && role == Qt::DisplayRole && j== 4 )
     {

      QModelIndex LinkIndex = QSqlQueryModel::index(index.row(),4);
      setData(LinkIndex,value,Qt::UserRole); // this is not working and gives me erorr


      return valueEmpty;
     }
     else
     {
       return value;
     }
    }

, это дает мне эту ошибку, что я знаю, что это метод реализации, не const

error C2662: 'MyListSqlModel::setData' : cannot convert 'this' pointer from 'const MyListSqlModel' to 'MyListSqlModel&'

но как правильно это сделать?

1 Ответ

1 голос
/ 03 февраля 2012

Как я понимаю из кода, вы хотите игнорировать Qt::DisplayRole столбца 4. В этом случае вам не нужно иметь дело с UserRole, а просто вернуть пустое QVariant

QVariant MyListSqlModel::data(const QModelIndex &index, int role) const
{
   if(index.column() == 4 && role == Qt::DisplayRole)
          return QVariant();

   //else process the data in ususal way
}

Пожалуйста, поправьте меня, если я неправильно понял вопрос

edit

Спасибо за комментарий.Я начал использовать собственные роли для своих моделей.Рабочий процесс выглядит следующим образом:

Определение пользовательской роли пользователя в заголовке

enum MyDataRoles {
   MyDisplayRole = Qt::UserRole + 10
}

Теперь для setData я использую фрагмент из здесь .

А для получения данных вы можете использовать фрагмент из здесь .Вам просто нужно проверить на MyDisplayRole

Надеюсь, это поможет :)

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