Я пытаюсь выяснить, как работать с моделями и представлениями в PyQt4.9.1, и я столкнулся с некоторой проблемой.PyQt4.9.1 view never calls model.data
Вот код, который имеет значение:
class TestModel(QtGui.QStandardItemModel):
def __init__(self,parent=None):
QtGui.QStandardItemModel.__init__(self,parent)
self.initData()
self.headings = ['name','value','']
def initData(self):
self.rows = [['name {0}'.format(i), i] for i in range(20)]
def data(self, index, value, role):
print ("foo")
if not index.isValid():
return
if (role == QtCore.Qt.DisplayRole):
row = index.row()
col = index.column()
if (col == 3):
return "BUTTON GOES HERE"
return self.rows[row][col]
def headerData(self,section,orientation,role):
if (role == QtCore.Qt.DisplayRole):
if (orientation == QtCore.Qt.Horizontal):
return self.headings[section]
def rowCount(self,parent):
return len(self.rows)
def columnCount(self,parent):
return 3
class MainWindow(QtGui.QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.m = TestModel()
self.initUi()
def initUi(self):
layout = QtGui.QVBoxLayout()
widget = QtGui.QTableView()
widget.setModel(self.m)
layout.addWidget(widget)
self.setLayout(layout)
self.show()
Вот что происходит, когда я запускаю MainWindow моего приложения: Там нет никаких сообщений об ошибках, таблица рисуется с правильным числом строк и столбцов и правильных заголовков, но таблица пуста. Вы можете заметить, что метод рисования модели начинается с заявления печати. Это утверждение никогда не достигается. Есть что-то, что мне не хватает? Я не могу найти какие-либо учебники вообще для PyQt4.9.1.
Я предполагаю, что я бы иметь si milar проблемы с попыткой реализовать мою собственную модель дерева, но нет QAbstractTreeModel ... Я собираюсь пойти с переопределением функции индекса ... Я сейчас ищу информацию об этом, но любые советы будут оценены. Спасибо за указание ошибок – Sheena