Название: Как заблокировать пользователю ввод данных в ячейках? Отправлено: Ncs от Октябрь 28, 2008, 22:04 Как заблокировать пользователю ввод данных в ячейках?
Конкретно в выбранной строке запретить ввод данных в избранные ячейки. К примеру, если у вас в первой ячейки стоит «А», тогда данные во второй ячейке пользователь не может редактировать, если изменяются данные в первой ячейки на «B», тогда пользователь может редактировать вторую ячейку. Штудирую документацию, но пока ничего не нашёл. Косвенно полагаю надо использовать EditTriggers editTriggers () const класса QAbstractItemView с NoEditTriggers, но где это использовать в функциях делегата или ещё где-то не понимаю. Если кто-то сталкивался с подобной задачей или просто знает, буду весьма признателен за помощь. Название: Re: Как заблокировать пользователю ввод данных в ячейках? Отправлено: ритт от Октябрь 28, 2008, 22:36 правильнее будет смотреть в сторону
Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const [virtual] Название: Re: Как заблокировать пользователю ввод данных в ячейках? Отправлено: Ncs от Октябрь 28, 2008, 23:16 Константин, так понимаю выход в том, что надо создать свою модель и переопределить метод Qt::ItemFlags flags(const QModelIndex &index) const, так как есть только флаг Qt::ItemIsEditable, отвечающий за возможность редактирования, а не отмены или запрета редактирования?
Название: Re: Как заблокировать пользователю ввод данных в ячейках? Отправлено: ритт от Октябрь 28, 2008, 23:38 поскольку запрет на редактирование зависит от определённых данных модели, вполне логично реализовать необходимое именно в модели, а не во вьюхе.
Qt::ItemIsEditable как раз отвечает за возможность редактирования. (0 - запрет, 1 - разрешено) editTriggers вьюхи - это всего лишь способ перекрыть предложенные моделью разрешения. Название: Re: Как заблокировать пользователю ввод данных в ячейках? Отправлено: developer от Октябрь 29, 2008, 13:02 У меня была похожая проблема - мне нужно было сделать нередагируемими избранные ячейки.
Код: table->setColumnCount(model->columnCount());// model - в моем случае ето QSqlTableModel, table - ето QTableWidget который отображал данные из модели Название: Re: Как заблокировать пользователю ввод данных в ячейках? Отправлено: developer от Октябрь 29, 2008, 13:06 Немного неполучилось , хтел сделать так
item->setFlags(Qt::ItemIsEditable^2);// а здесь мы делаем ячейки нередагуемой Вот етот Qt::ItemIsEditable^2 и отменяет редагируемость ячейки Название: Re: Как заблокировать пользователю ввод данных в ячейках? Отправлено: spirit от Октябрь 29, 2008, 13:43 можно в делегате эдитор не создавать ;D
|