에 연결된 PyQt QTableView
이 있습니다.이 자체는 항목 목록을 관리하는 사용자 정의 클래스에 연결됩니다. 목록의 끝에 항목을 삽입 할 수 있으며 적절하게 내 모델에 알리고 beginInsertRows
및 endInsertRows
을 호출합니다. 그 두 함수를 호출하고 목록 자체가 업데이트되었는지 확인할 수 있지만 테이블은 data
을 호출하여 업데이트 된 행을 검색하지 않습니다.행이 추가 될 때 PyQt QAbstractTableModel이 업데이트되지 않음
무슨 일 이니? 어떻게 해결할 수 있습니까?
class FigureTableModel(QAbstractTableModel):
def __init__(self):
QAbstractTableModel.__init__(self)
def changed(index):
start_index = self.createIndex(index, 0)
end_index = self.createIndex(index, COLUMNS - 1)
self.dataChanged.emit(start_index, end_index)
def adding_row(index):
self.beginInsertRows(self.createIndex(0, 0), index, index)
print 'adding ', index
def added_row(index):
self.endInsertRows()
print 'added'
figures.dataChanged.connect(changed)
figures.rowAdding.connect(adding_row)
figures.rowAdded.connect(added_row)
def rowCount(self, parent):
return len(figures)
def columnCount(self, parent):
return COLUMNS
def data(self, index, role):
print 'in data'
if not index.isValid():
return EMPTY
return figures[index.row()].get_table_item(index.column(), role)
'index'와'createIndex'에 대해 알아두면 좋을 것 같습니다. 그것은 문서에서 아주 명확하지 않다. 전역 변수의 경우,'COLUMNS'와'EMPTY'는 기본적으로 모두 정적 인 상수입니다 ('EMPTY'는 문서마다 잘못된'QVariant'입니다). '수치 '가 싱글 톤이기 때문에 세계적인 수치가있다. UI에는 이러한 테이블 중 하나만 있습니다. –
@ChrisB .:'createIndex'에 관해서 ... 기술적으로 아무 데나 사용하는 것이 잘못된 것은 아니지만 그렇게 할 이유가별로 없습니다. 일반적으로'index'와'parent'만이'QModelIndex'를 생성해야합니다. 다른 메소드는 이러한 메소드에 인덱스를 요청할 수 있습니다. – Avaris