지연. 다음 코드에서는 사용자가 셀을 클릭 할 때 필터가 적용되는지 여부에 관계없이 선택된 텍스트가 표시되도록 관리했습니다. 그러나 항상 1 클릭 뒤이며 시작 후 첫 번째 클릭은 IndexError: pop from empty list
이되고 같은 열에서 새 열이 선택되면 아무 일도 발생하지 않습니다.PyQt4 내가 레코드를 필터링 할 <code>QSortFilterProxyModel</code>를 사용과 함께 <code>QSqlTableModel</code>의 내용을 표시하는 <code>QTableView</code>를 사용하고 한 번의 클릭
테이블을 초기화 한 후 색인을 선택하려고했지만 아무 것도하지 않는 것 같습니다. 나는 다음에 무엇을 시도 할 것인가에 대한 아이디어가 없다.
class TableViewer(QtGui.QWidget):
self.model = QSqlTableModel()
self._proxyModel = QtGui.QSortFilterProxyModel()
self._proxyModel.setSourceModel(self.model)
self.tv= QTableView()
self.tv.setModel(self._proxyModel)
'''Call-able filter - pass in string to filter everything that doesn't match string'''
QtCore.QObject.connect(self.textEditFilterBox, QtCore.SIGNAL("textChanged(QString)"), self._proxyModel.setFilterRegExp)
def getItem(self):
'''Retruns item text of selected item'''
index = self.selectionModel.selectedIndexes().pop()
if index.isValid():
row = index.row()
column = index.column()
model = index.model()
if hasattr(model, 'mapToSource'):
#proxy model
modelIndex = model.mapToSource(index)
print (modelIndex.row(), modelIndex.column())
return self.model.record(modelIndex.row()).field(modelIndex.column()).value().toString()
return self.model.record(row).field(column).value().toString()
class MainWindow(QtGui.QMainWindow):
#initialize TableViewer
self.tblViewer.connect(self.tblViewer.tv.selectionModel(),
SIGNAL(("currentRowChanged(QModelIndex,QModelIndex)")),
self.tblItemChanged)
def tblItemChanged(self, index):
'''display text of selected item '''
text = self.tblViewer.getItem()
print(text)
훨씬 간단하고 완벽하게 감사를 작동합니다. (나는 새로운 스타일을 모르고 있었고, 다시 깨끗하게 보였다.) –