Название: QTableView, как определить что едитор запущен? Отправлено: Flakes от Ноября 29, 2009, 12:34 Нужно определить, запущен ли в данный момент редактор или нет. Решил сделать через флаг, устанавливая его в момент когда редактор запущен и сбрасывая, когда завершается. Я в своем классе определил два слота:
Код
С closeEditor() все ок, а edit() почему то не вызывается, может я что то не так делаю? Название: Re: QTableView, как определить что едитор запущен? Отправлено: spectre71 от Ноября 29, 2009, 12:46 Что значит запущен?
Название: Re: QTableView, как определить что едитор запущен? Отправлено: Flakes от Ноября 29, 2009, 13:49 Значит я в данный момент редактирую содержимое ячейки
(http://i47.tinypic.com/122hgmh.png) Запускается по дабл-клику по дефолту. Название: Re: QTableView, как определить что едитор запущен? Отправлено: spectre71 от Ноября 29, 2009, 14:24 Значит я в данный момент редактирую содержимое ячейки (http://i47.tinypic.com/122hgmh.png) Запускается по дабл-клику по дефолту. void MyTableView::edit(const QModelIndex &index); не является виртуальным! Вызавается edit базового класса (QAbstractItemView) Переопредели: bool QAbstractItemView::edit ( const QModelIndex & index, EditTrigger trigger, QEvent * event ) [virtual protected] И отслеживай в ней Не забyдь только вызваь ее у базоаого класса! bool MyTableView::edit ( const QModelIndex & index, EditTrigger trigger, QEvent * event ) { QAbstractItemView::edit (index, trigger, event) ; // Do something } Название: Re: QTableView, как определить что едитор запущен? Отправлено: Flakes от Ноября 29, 2009, 14:29 Переопредели: bool QAbstractItemView::edit ( const QModelIndex & index, EditTrigger trigger, QEvent * event ) [virtual protected] И отслеживай в ней А как можно переопределить метод QAbstractItemView, не наследуя весь класс? Название: Re: QTableView, как определить что едитор запущен? Отправлено: Flakes от Ноября 29, 2009, 15:13 Ничего в QAbstractItemView переопределять не пришлось. Обошелся edit(const QModelIndex &index, QAbstractItemView::EditTrigger trigger, QEvent *event) вместо edit(const QModelIndex &index).
Спасибо! Название: Re: QTableView, как определить что едитор запущен? Отправлено: Flakes от Ноября 29, 2009, 16:18 Попутный вопрос на эту же тему. А как вручную завершить едитор?
В описании edit() сказато: Цитировать Starts editing the item at index, creating an editor if necessary Я так понимаю, я могу закрыть его через closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint), только откуда мне взять ссылку на editor? Название: Re: QTableView, как определить что едитор запущен? Отправлено: Flakes от Ноября 29, 2009, 19:38 Сделал вот так,
Код
редактор закрывается, но данные не сабмитятся... ??? |