Russian Qt Forum

Qt => Общие вопросы => Тема начата: C.H. от Декабрь 09, 2006, 10:46



Название: [Qt4.2.2] Model-View read only
Отправлено: C.H. от Декабрь 09, 2006, 10:46
Привет всем!
Скажите как сделать в связке model-view  - view - только для чтения?
Юзаю QSqlRelationalTableModel в связке QTableView
Так вот хочю чтобы в QTableView нельзя было изменить данные?
Задача #1 - все данные только для чтения
Задача #2 - отедльные колонки только для чтения

Если заполняю модель "ручками" - тогда можно на МодельИндекс поставить флаг аля "read-only", а как быть с QSqlRelationalTableModel???

Help!


Название: [Qt4.2.2] Model-View read only
Отправлено: Alexei от Декабрь 09, 2006, 16:15
Сабклассить QSqlRelationalTableModel и перекрыть метод flags. Так можно решить обе задачи


Название: [Qt4.2.2] Model-View read only
Отправлено: C.H. от Декабрь 09, 2006, 16:34
вто-мто и дело
наследовать лень :)


Название: [Qt4.2.2] Model-View read only
Отправлено: Tonal от Декабрь 09, 2006, 17:10
QAbstractItemView::setEditTrigger(QAbstractItemView::NoEditTriggers);
Оно?


Название: [Qt4.2.2] Model-View read only
Отправлено: C.H. от Декабрь 12, 2006, 01:24
Неа
Это тригеры :(


Название: [Qt4.2.2] Model-View read only
Отправлено: C.H. от Февраль 13, 2007, 23:32
Цитата: "Alexei"
Сабклассить QSqlRelationalTableModel и перекрыть метод flags. Так можно решить обе задачи

Ага
ты был прав:
Код:
class MySqlTableModel : public QSqlTableModel {
//Q_OBJECT
public:
MySqlTableModel(QObject * parent = 0, QSqlDatabase db = QSqlDatabase() )
:QSqlTableModel(parent, db){}

Qt::ItemFlags flags(const QModelIndex &index) const
{
Qt::ItemFlags flags = QSqlQueryModel::flags(index);
//if (index.column() == 1 || index.column() == 2)
if (index.column() == 2)
flags |= Qt::ItemIsEditable;
return flags;
}

};


в assistant в разделе QtSql Module написанно :)