Ich möchte eine Unterklasse a QAbstractItemModel
erstellen, um sie in QTreeView
zu verwenden. Zunächst entschied ich mich, ein minimalistisches Modell ohne Hierarchie zu erstellen. Es sollte eine 2-mal-3-Tabelle mit einfachen Textdaten (nur lesbar) geben.QAbstractItemModel für QTreeView: was mache ich falsch?
Leider, es stürzt nicht ab, zeigt aber keine Daten: nur ein paar Spaltenüberschriften (1, 2). Kann mir nicht jemand sagen, was mache ich falsch?
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_())
Warum Sie zurückgeben 'parent.internalPointer()' 'von index' Methode, wenn' parent' Index gültig? – Dmitry
Nun, ich habe gerade versucht, dies zu ändern, um 'QtCore.QModelndex()' zurückzugeben, wenn 'Eltern' gültig ist. Nichts ist gechartet, die gewünschten Zellen erscheinen nicht ... – Felix
Da ist auch der zweite Fehler, siehe meine Antwort. – Dmitry