我想創建一個子類QAbstractItemModel
以在QTreeView
中使用它。起初,我決定製作一個沒有任何層次支持的簡約模型。它應該提供一個2×3的表格和簡單的文本數據(只讀一個)。用於QTreeView的QAbstractItemModel:我做錯了什麼?
唉,它不會崩潰,但不會顯示任何數據:只有少數列標題(1,2)。有人不能告訴我,我做錯了什麼?
import os, sys
from PyQt5 import QtWidgets, QtCore, QtGui, QtSvg
from PyQt5.QtCore import QPointF, QRectF
from PyQt5.QtWidgets import QGraphicsItem
from gui.graphic_items import *
class MegaModel(QtCore.QAbstractItemModel):
def __init__(self, parent=None):
super().__init__(parent)
self._root_item = 7.40
pass
def columnCount(self, parent_index):
if parent_index.isValid():
return 0
else:
return 2
def rowCount(self, parent_index):
if parent_index.isValid():
return 0
else:
return 3
def data(self, index, role):
if index.isValid():
return QtCore.QVariant("Oy vey!")
else:
return None
def index(self, row, column, parent=QtCore.QModelIndex()):
print("index", row, column, parent)
if parent.isValid():
print("valid")
return parent.internalPointer()
else:
print("invalid")
return self.createIndex(row, column, self._root_item)
def parent(self, index):
return QtCore.QModelIndex()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mega_view = QtWidgets.QTreeView()
mega_model = MegaModel()
mega_view.setModel(mega_model)
mega_view.show()
sys.exit(app.exec_())
你爲什麼從'index'方法返回'parent.internalPointer()''如果指數parent'是有效? – Dmitry
那麼,我只是試圖修改這個''parent'有效時返回'QtCore.QModelndex()'。沒有變化,所需的細胞不會出現... – Felix
還有第二個錯誤,請參閱我的答案。 – Dmitry