Название: Изменение состояния делегата текущей ячейки от содержимого соседней ячейки. Отправлено: Ncs от Октябрь 21, 2008, 16:59 Доброго времени суток!
Qt 4.2 или 4.3 Вопрос: необходимо создать делегат для ячейки в таблице QSqlTableModel, так чтобы поведение содержимого выпадающего списка зависело от содержимого соседней ячейки. К примеру, условно ячейка 1 строки N (редактируемая в данный момент строка) может содержать либо «a», либо «b», либо «c». Пользователь, переходя курсором в ячейку 2 строки N получает: - список 1, если было «а» в ячейке 1 строки N - список 2, если было «b» в ячейке 1 строки N - список 3, если было «c» в ячейке 1 строки N. Не понимаю во-первых, где брать информацию о данных ячейки 1 в методах createEditor или в setEditorData, а во-вторых, как узнать данные в соседней ячейке редактируемой строки. ??? Очень прошу всех, кто может помочь! Название: Re: Изменение состояния делегата текущей ячейки от содержимого соседней ячейки. Отправлено: spirit от Октябрь 21, 2008, 17:05 в createEditor передается QModelIndex, через этот индекс можно достучаться к модели, а из модели можно получить данные для нужной ячейки. затем, в делегате есть метод setModelData в которые передается модель из которой так же можно получить/установить значение. :)
Название: Re: Изменение состояния делегата текущей ячейки от содержимого соседней ячейки. Отправлено: Ncs от Октябрь 23, 2008, 21:45 Спасибо, spirit!
Вы натолкнули на правильный ход мыслей, реализовал все в createEditor(). Похоже, чтобы полностью понять, как работают делегаты, надо научится писать собственные модели с "0". Если кому-то интересно: Код: QWidget * DDD::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const |