Название: QTableWidget определить что закончилось редактирование!! Отправлено: NetWorm от Октябрь 01, 2011, 12:28 QTreeWidget - которая заполняется из БД... затем я в ручную создаю элемент в дереве т.е. на редактирование открыт только текущий... Теперь вопрос как мне определить нажатие ентер т.е. указать что я иминно выхожу из редактирования??
Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: kambala от Октябрь 01, 2011, 12:34 сигнал itemChanged наверное
Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: NetWorm от Октябрь 01, 2011, 12:44 Ну да а как мне например определить что именно этот элемент открыт на редактирование? т.е. как мне узнать установлен ли Qt::ItemIsEditable для него или нет?
Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: kambala от Октябрь 01, 2011, 13:13 ну ты на параметры сигнала посмотри ;) вот только Qt::ItemIsEditable просто означает, что элемент можно редактировать
Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: NetWorm от Октябрь 01, 2011, 13:20 Не понял где его смотреть?
Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: kambala от Октябрь 01, 2011, 15:24 в документации (ассистенте например) на QTreeWidget
Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: NetWorm от Октябрь 02, 2011, 10:48 Код: void frmUslugi::on_treeWidget_itemChanged(QTreeWidgetItem *item, int column) Это происходит как создании элемента, так и при завершении редактирования! Как мне можно отловить нажатие на кнопку Enter. Объясняю мне нужно после редактирования задавать вопрос стоит ли сохранять значение в Базе данных.... Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: blood_shadow от Октябрь 02, 2011, 11:41 Как мне можно отловить нажатие на кнопку Enter. Объясняю мне нужно после редактирования задавать вопрос стоит ли сохранять значение в Базе данных.... Вариант 1: сабкласс QTreeWidget, переопределить keyPressEvent ( QKeyEvent * event ), и там ловить твой ентер Вариант 2: installEventFilter на твой QTreeWidget возьми книгу Бланшета, глава 7 помойму "обработка событий" там такое есть Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: NetWorm от Октябрь 02, 2011, 11:45 Вот сейчас и пробую именно второй вариант делать!!!
Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: NetWorm от Октябрь 02, 2011, 12:07 Благодарю за ссылку на источник!!!
Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: NetWorm от Октябрь 08, 2011, 14:54 Как к QTableWidget применить setModel? Ругается на то что она приват!!
Название: Re: QTreeWidget определить что закончилось редактирование!! Отправлено: iroln от Октябрь 08, 2011, 15:12 Как к QTableWidget применить setModel? Ругается на то что она приват!! Чтобы установить модель нужно использовать QTableView, а не QTableWidget. QTableWidget - это элементо-ориентированный компонент, а QTableView позволяет использовать архитектуру модель-представление.Название: Re: QTableView определить что закончилось редактирование!! Отправлено: NetWorm от Октябрь 08, 2011, 15:23 Как же тогда отловить событие окончания редактирования ячейки QTableView
Название: Re: QTableWidget определить что закончилось редактирование!! Отправлено: iroln от Октябрь 08, 2011, 15:31 Если у вас есть модель, которая работает с данными из вашей БД, то отловить окончание редактирования ячейки можно непосредственно в методе setData вашей модели, до того, как данные будут обновлены в БД. Если метод setData возвращает false, то данные в ячейке, которую вы редактировали устанавливаются (вид автоматически обновляется) в прежнее состояние (до редактирования).
Название: Re: QTableWidget определить что закончилось редактирование!! Отправлено: NetWorm от Октябрь 08, 2011, 15:42 Так... Вот что пока получилось...
при инициализации формы делаю Код: connect(tabl,SIGNAL(dataChanged(QModelIndex,QModelIndex)),this,SLOT(editFinish(QModelIndex))); Код: void frmUslugi::editFinish(QModelIndex index){ но вот строчка Код: ui->tableUslugi->setCurrentIndex(index); Мне нужно чтобы при окончании редактирования фокус вернулся в ячейку Название: Re: QTableWidget определить что закончилось редактирование!! Отправлено: iroln от Октябрь 08, 2011, 15:48 По идее сигнал dataChanged высылается моделью уже ПОСЛЕ того, как данные были изменены, то есть предполагается, что они уже были записаны куда-то там, где они хранятся. Этот сигнал используется видами для собственного обновления. Вам надо, как я понял, вывести подтверждение до того, как данные будут сохранены. Это надо делать в модели, а не в виде, потому что одна модель может иметь несколько видов одновременно. Не будете же вы в каждом виде реализовывать проверку вводимых данных.
Вот тут можно почитать: http://doc.crossplatform.ru/qt/4.7.x/model-view-programming.html Название: Re: QTableWidget определить что закончилось редактирование!! Отправлено: NetWorm от Октябрь 08, 2011, 15:54 У меня сделано, что при нажатии на Enter я двигаюсь по ячейкам, но при редактировании ячейки теряется фокус и мне нужно его вернуть на следующую ячейку или остаться на этой же... т.е. чтобы закончилось редактирование и ячейка осталась выделенной
|