Russian Qt Forum
Ноябрь 06, 2024, 10:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QTableWidget определить что закончилось редактирование!!  (Прочитано 9116 раз)
NetWorm
Гость
« : Октябрь 01, 2011, 12:28 »

QTreeWidget - которая заполняется из БД... затем я в ручную создаю элемент в дереве т.е. на редактирование открыт только текущий... Теперь вопрос как мне определить нажатие ентер т.е. указать что я иминно выхожу из редактирования??
« Последнее редактирование: Октябрь 08, 2011, 15:08 от NetWorm » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #1 : Октябрь 01, 2011, 12:34 »

сигнал itemChanged наверное
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
NetWorm
Гость
« Ответ #2 : Октябрь 01, 2011, 12:44 »

Ну да а как мне например определить что именно этот элемент открыт на редактирование? т.е. как мне узнать установлен ли Qt::ItemIsEditable для него или нет?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #3 : Октябрь 01, 2011, 13:13 »

ну ты на параметры сигнала посмотри Подмигивающий вот только Qt::ItemIsEditable просто означает, что элемент можно редактировать
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
NetWorm
Гость
« Ответ #4 : Октябрь 01, 2011, 13:20 »

Не понял где его смотреть?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4746



Просмотр профиля WWW
« Ответ #5 : Октябрь 01, 2011, 15:24 »

в документации (ассистенте например) на QTreeWidget
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
NetWorm
Гость
« Ответ #6 : Октябрь 02, 2011, 10:48 »

Код:
void frmUslugi::on_treeWidget_itemChanged(QTreeWidgetItem *item, int column)
{
    if (item->flags().operator &(Qt::ItemIsEditable)){
        qDebug() << "123";
        //item->setFlags(item->flags() ^ Qt::ItemIsEditable);
    }
}

Это происходит как создании элемента, так и при завершении редактирования!

Как мне можно отловить нажатие на кнопку Enter. Объясняю мне нужно после редактирования задавать вопрос стоит ли сохранять значение в Базе данных....
Записан
blood_shadow
Гость
« Ответ #7 : Октябрь 02, 2011, 11:41 »


Как мне можно отловить нажатие на кнопку Enter. Объясняю мне нужно после редактирования задавать вопрос стоит ли сохранять значение в Базе данных....

Вариант 1: сабкласс QTreeWidget, переопределить keyPressEvent ( QKeyEvent * event ), и там ловить твой ентер
Вариант 2: installEventFilter на твой QTreeWidget

возьми книгу Бланшета, глава 7 помойму "обработка событий" там такое есть
Записан
NetWorm
Гость
« Ответ #8 : Октябрь 02, 2011, 11:45 »

Вот сейчас и пробую именно второй вариант делать!!!
Записан
NetWorm
Гость
« Ответ #9 : Октябрь 02, 2011, 12:07 »

Благодарю за ссылку на источник!!!
Записан
NetWorm
Гость
« Ответ #10 : Октябрь 08, 2011, 14:54 »

Как к QTableWidget применить setModel? Ругается на то что она приват!!
Записан
iroln
Гость
« Ответ #11 : Октябрь 08, 2011, 15:12 »

Как к QTableWidget применить setModel? Ругается на то что она приват!!
Чтобы установить модель нужно использовать QTableView, а не QTableWidget. QTableWidget - это элементо-ориентированный компонент, а QTableView позволяет использовать архитектуру модель-представление.
Записан
NetWorm
Гость
« Ответ #12 : Октябрь 08, 2011, 15:23 »

Как же тогда отловить событие окончания редактирования ячейки QTableView
Записан
iroln
Гость
« Ответ #13 : Октябрь 08, 2011, 15:31 »

Если у вас есть модель, которая работает с данными из вашей БД, то отловить окончание редактирования ячейки можно непосредственно в методе setData вашей модели, до того, как данные будут обновлены в БД. Если метод setData возвращает false, то данные в ячейке, которую вы редактировали устанавливаются (вид автоматически обновляется) в прежнее состояние (до редактирования).
Записан
NetWorm
Гость
« Ответ #14 : Октябрь 08, 2011, 15:42 »

Так... Вот что пока получилось...

при инициализации формы делаю
Код:
connect(tabl,SIGNAL(dataChanged(QModelIndex,QModelIndex)),this,SLOT(editFinish(QModelIndex)));

Код:
void frmUslugi::editFinish(QModelIndex index){
    qDebug() << index.row();
    qDebug() << index.column();
    ui->tableUslugi->setCurrentIndex(index);
}

но вот строчка
Код:
ui->tableUslugi->setCurrentIndex(index);
не срабатывает...

Мне нужно чтобы при окончании редактирования фокус вернулся в ячейку
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.125 секунд. Запросов: 22.