2015-07-09 4 views
0

Для того, чтобы заполнить QTableView() я использую метод setItem(r, c, item)model.setItem() испускает сигнал model.itemChanged() вызывает цикл

table = QTableView() 
model = QStandardItemModel() 
table.setModel(model) 
item = QStandardItem("some value") 
model.setItem(r, c, item) 

Я использую его, чтобы заполнить QTableView() с данными, полученными из словаря. Также, если я меняю элементы вручную непосредственно в QtableView(), я использую сигнал itemChanged() для вызова функции, которая выполняет некоторые действия.

Проблема заключается в том, что метод itemChanged() вызывается, также когда элемент обновляется из словаря. Поэтому он вызывает программу looped Хотя, если я использую model.appendRow([one , two, three]), чтобы заполнить таблицу, itemChanged() не испускает сигнал

Есть ли способ его решить?

ответ

0

При редактировании данных элемента с использованием графического интерфейса dataChanged() сигнала

+0

'col_c = table.model(). ColumnCount() \t \t row_c = table.model(). ROWCOUNT() \t \t стол. dataChanged (table.model(). index (0, 0), table.model(). index (row_c - 1, col_c - 1)). connect (self.ChangeDnPItem) 'не работает. что я делаю неправильно? –

+0

'model.dataChanged' вызывает цикл, а также –

+0

Итак, что не так ?. Чтобы заполнить View(), я должен использовать setItem(), который вызывает сигнал DataChanged или itemChanged. Итак, цикл продолжается. Есть ли какой-либо сигнал, который ТОЛЬКО соответствует изменениям в графическом интерфейсе? –

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

  • Нет связанных вопросов^_^