В TableView нужно было запретить редактирование данных одних ячеек и разрешить других. Сделал через делегат - работает. НО, видел пример где сделали производный класс и переопределили функцию flags, она возвращает различные свойства(флаги) для ячейки:
Раскрывающийся текст
Qt::ItemFlags QMyTreeModel::flags(const QModelIndex & index) const
{
if(index.column() == 1) return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable; // вторую колонку можно редактировать
return Qt::ItemIsEnabled | Qt::ItemIsSelectable; // остальные нет
}
Сделал свой класс:
Раскрывающийся текст
class MyBillView: public QTableView
{
Q_OBJECT
public:
MyBillView(QWidget* parent = 0);
Qt::ItemFlags flags(const QModelIndex & index ) const;
};
{
Q_OBJECT
public:
MyBillView(QWidget* parent = 0);
Qt::ItemFlags flags(const QModelIndex & index ) const;
};
Раскрывающийся текст
MyBillView::MyBillView(QWidget* parent)
:QTableView(parent)
{
}
Qt::ItemFlags MyBillView::flags(const QModelIndex &index) const
{
return Qt::ItemIsSelectable;
}
:QTableView(parent)
{
}
Qt::ItemFlags MyBillView::flags(const QModelIndex &index) const
{
return Qt::ItemIsSelectable;
}
Вроде как ни одна ячейка не должна редактироваться, а просто можно щёлкать по ним, но они редактируются и сохраняются в БД.
Чего я не доглядел?