Russian Qt Forum

Qt => Model-View (MV) => Тема начата: Денис от Март 22, 2010, 19:46



Название: Редактирование только одного столбца в QTableView
Отправлено: Денис от Март 22, 2010, 19:46
Доброго времени суток всем!

Проблема следующая: Отображаю в QTableView таблицу. Необходимо разрешить пользователю редактировать только один столбец из всего представления, остальные не должны открываться на редактирование. Подскажите пожалуйста как это сделать?


Название: Re: Редактирование только одного столбца в QTableView
Отправлено: Пантер от Март 22, 2010, 20:09
Поищи по форуму, вопрос поднимался.
Если используешь свою модель, то передавай нужные флаги. Еще можно через делегата.


Название: Re: Редактирование только одного столбца в QTableView
Отправлено: cya-st от Март 23, 2010, 11:55
В модели переопредели функцию flags.
Пример:
Код:
Qt::ItemFlags MyModel::flags(const QModelIndex &index) const
{
    Qt::ItemFlags flags = QSqlQueryModel::flags(index);
    if (index.column() == 5 || index.column() == 9 || index.column() == 10)
        flags |= Qt::ItemIsEditable;

    return flags;
}
Перечислены поля которые будут редактироватся.


Название: Re: Редактирование только одного столбца в QTableView
Отправлено: Денис от Март 26, 2010, 00:10
Большое спасибо за помощь, завтра попробую!