2015-04-02 2 views
0

Можно ли определить ситуацию, когда пользователь меняет значение ячейки в QtTableWidget вручную? Я использовал table.itemChanged.connect(func), но я думаю, что itemChanged обнаруживает все изменения, поэтому я не могу пополнить таблицу в функции func.Обнаруживать элемент изменен - ​​QtTableWidget

Когда пользователь меняет значение QtTableWidget, программа запускает метод (func), который заполняет всю таблицу. Проблема в том, что table.itemchanged обнаруживает все изменения, поэтому возвращает ошибку: RuntimeError: maximum recursion depth exceeded while calling a Python object, потому что func генерирует много сигналов itemChanged.

+0

Вы можете создать свой собственный делегат ('QItemDelegate') и обработать используемый вход там. –

ответ

1

Вы можете блокировать сигналы в своей функции.

func(...) 
{ 
... 
table.blockSignals(true); 
// do your change here 
table.blockSignals(false); 
... 
} 

или используйте новее QSignalBlocker.

Смежные вопросы