Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QTableView::flags
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
xu-user
Доброго времени суток.
В 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;
};


Раскрывающийся текст
MyBillView::MyBillView(QWidget* parent)
:QTableView(parent)
{

}

Qt::ItemFlags MyBillView::flags(const QModelIndex &index) const
{
return Qt::ItemIsSelectable;
}


Вроде как ни одна ячейка не должна редактироваться, а просто можно щёлкать по ним, но они редактируются и сохраняются в БД.
Чего я не доглядел?
PAFOS
в примере, где ты видел идет наследование и переопределение Qt::ItemFlags QAbstractItemModel::flags( const QModelIndex &idx ) const;
а ты наследуешь QTableView и определяешь метод Qt::ItemFlags MyBillView::flags(const QModelIndex &index) const, который никогда по идее не вызовется в программе)
xu-user
Всё понял теперь ))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.