Для ускорения работы QComboBox с очень большим набором данных хочу попробовать использовать QSqlQueryModel вместо QStandardItemModel. Но текстовые данные в QComboBox мне нужно привязать к ID, который сейчас хранится в itemData(rowIndex, Qt::UserRole). Если в запросе для QSqlQueryModel есть 2 колонки: ID и Text и для QComboBox определено setModelColumn(1), т.е. Text.
Как правильно наследовать или переопределить QSqlQueryModel, чтобы combobox->itemData(rowIndex, Qt::UserRole) содержал ID? Кто с таким сталкивался или знает ссылку на источник? Если переопределить QVariant QSqlQueryModel::data ( const QModelIndex & item, int role = Qt::DisplayRole ) таким образом:
C++ (Qt)
QVariant MySqlModel::data(const QModelIndex &index, int role) const
{
if(role == Qt::UserRole && index.column() == 1)
return QSqlQueryModel::data(this->index(index.row(), 0), Qt::DisplayRole);
return QSqlQueryModel::data(index, role);
}
будет ли это работать, т.е. будет combobox->itemData(rowIndex, Qt::UserRole) содержать ID? Или надо исследовать исходники Qt?