我想弄清楚如何在PyQt4.9.1中使用模型和視圖,並且遇到了一些問題。PyQt4.9.1視圖從不調用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()
這裏是當我啓動我的應用程序的主窗口會發生什麼:沒有錯誤消息,該表繪製的行和列和正確的標題右側的號碼,但桌子是空的。您可能會注意到模型的繪製方法以打印語句開始。該聲明從未達到。有什麼我失蹤?對於PyQt4.9.1我無法找到任何教程。
我假設我會有si試圖實現我自己的樹模型的類似問題,但沒有QAbstractTreeModel可用...我將重新實現索引函數...我正在查找有關此信息,但任何提示將不勝感激。感謝您指出錯誤 – Sheena