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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Событие на изменение содержимого ячейки у QTableWidget  (Прочитано 6310 раз)
dr_Begemot
Гость
« : Июнь 22, 2009, 15:46 »

У QTableWidget есть сигнал cellChanged, но он мне не подходит т.к. он срабатывает во всех случаях, мне же нужен такой сигнал, который бы срабатывал только при изменениях в форме.

Например в случае если:
QTableWidgetItem* item = view()->tablePlace->item(row, 0);
item->setText( "abcd" );

то сигнгал не должен генерироваться...
Записан
mugabe
Гость
« Ответ #1 : Июнь 22, 2009, 16:12 »

А когда должен генерироваться? Не совсем понятно.

Подозреваю, что тебе нужно ловить сигналы от делегата.
Записан
dr_Begemot
Гость
« Ответ #2 : Июнь 22, 2009, 16:14 »

А когда должен генерироваться? Не совсем понятно.

Подозреваю, что тебе нужно ловить сигналы от делегата.

Ну нужно чтобы генерился только при изменениях пользователем, а когда в программе setText вызывается этот сигнал бы не срабатывал.
Записан
mugabe
Гость
« Ответ #3 : Июнь 22, 2009, 16:20 »

В общем должно помочь что-то вроде.

connect(view()->itemDelegate(), SIGNAL(commitData(QWidget*)), this, SLOT(commitData(QWidget*)));

Писал "на глаз", работоспособность не проверял Улыбающийся
Записан
spectre71
Гость
« Ответ #4 : Июнь 22, 2009, 17:45 »

Например в случае если:
QTableWidgetItem* item = view()->tablePlace->item(row, 0);
item->setText( "abcd" );
то сигнгал не должен генерироваться...

Можешь сделать так:
mySetText("abcd");
Код
C++ (Qt)
void mySetText(const QString& text) {
 bool IsBlocked = view()->blockSignals(true);
 QTableWidgetItem* item = view()->tablePlace->item(row, 0);
 item->setText( text );
 view()->blockSignals(IsBlocked);
}
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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