Seite 1 von 1

Wie lese ich Daten aus einem QtGui.QStandardItemModel zurück

Verfasst: Freitag 14. August 2009, 14:36
von klaus66
Mit viel Probiererei ist es mir gelungen in meiner Applikation ein Tabellen Widget zu erstellen und mit

Code: Alles auswählen

model.setData(index, QtCore.QVariant(text[i]))
kann ich auch die Daten reinbringen, aber wie krieg ich sie wieder raus :?:
Ich habe so ziemlich alles ausprobiert, aber es funktionier einfach nicht. Ich bekomme stets nur einen Pointer in der Form

Code: Alles auswählen

<PyQt4.QtCore.QVariant object at 0xb7bb992c>
auf die adressierte Zelle im Model aber nicht die Daten selbst.
Gibt es eigentlich eine elegante Methode die gesamte Tabelle in einem Rutsch auszulesen?

Verfasst: Freitag 14. August 2009, 14:42
von Hyperion
Es gibt hier ein eigene PyQt-Forum. Da passt der Post besser hin (zumal man nur implizit erkennt, dass Du Dich auf Qt beziehst ;-) )

Verfasst: Freitag 14. August 2009, 15:09
von lunar
Und lies doch bitte die Dokumentation zu QVariant. Dort steht, mit welche Methoden Du an den Inhalt eines solchen Objekts herankommst!

Verfasst: Samstag 15. August 2009, 08:21
von klaus66
Die Antworten waren zwar nicht gerade hilfreich, mit viel "try and error" hab ich es dennoch rausgefunden. :P

Falls andere vor dem selben Problem stehen und keine Lust haben sich stundenlang durch die katastrophale Docu (nur für C++ Fans) zu quälen, hier ein Beispiel für das Auslesen einer ganzen Zeile als Unicodetext:

Code: Alles auswählen

    def getData(self, model, z, s):     # z = Zeile s = Spalte
        self.zeile = ""
        for i in range(s):
            index = model.index(z, i, QtCore.QModelIndex())
            self.zeile += u"%s " % QtCore.QVariant(model.data(index)).toString()

Verfasst: Samstag 15. August 2009, 08:27
von Hyperion
klaus66 hat geschrieben:Die Antworten waren zwar nicht gerade hilfreich, ...
Im PyQt-Forum lesen die Leute hier mit, die davon auch Ahnung haben - insofern hast Du dort das gebündelte Fachwissen. Wieso sollte das nicht hilfreich sein?

Und Lunar hat Dir zu verstehen gegeben, dass die Lösung trivial ist - Du siehst ja selber, dass das keine echte Schwierigkeit mehr mitgebracht hat, zu dem Wissen, was Dz bereits hattest (Eigentlich nur die toString()-Methode!)
Falls andere vor dem selben Problem stehen und keine Lust haben sich stundenlang durch die katastrophale Docu (nur für C++ Fans) zu quälen,
Die Qt-Dokumentation ist eine der besten, die ich kenne. was genau stört Dich daran? Sicher, es ist für die C++ Version geschrieben, aber da PyQt eh nur ein Wrapper ist, sind die Namen ja identisch.

Verfasst: Samstag 15. August 2009, 08:49
von vorlautboy
Hallo,

um an die Daten zu kommen verwendet man übrigens QAbstractItemModel.data! Lies dir dazu mal Qt's Model/View Architecture durch. Das Model/View Konzept wird da spitze erklärt und besonders der Abschnitt "Creating New Models" dürfte für dich interessant sein. Dort gibt es eine Anleitung dazu, wie man eigene Models erstellt (ich habe auch erst ab dort begonnen, das Model/View Konzept zu verstehen...).
Falls andere vor dem selben Problem stehen und keine Lust haben sich stundenlang durch die katastrophale Docu (nur für C++ Fans) zu quälen,
Die Qt-Dokumentation ist eine der besten, die ich kenne.
Das sehe ich übrigens genauso. Wenn man zusätzlich noch die Beispiele durchackert dürften eigentlich fast keine Fragen mehr offen bleiben...

Es gibt aber übrigens auch eine PyQt Doku; zu finden hier.

Verfasst: Samstag 15. August 2009, 23:46
von lunar
@klaus66: Den Verweis auf die Dokumentation wirst Du noch öfters zu sehen bekommen. Wenn man sich selbst nicht durch die Dokumentation "quälen" möchte, kann man schließlich schlecht von anderen erwarten, dass sie diese "Qual" auf sich nehmen und Dir die Dokumentation vorlesen ;)

Verfasst: Sonntag 16. August 2009, 11:29
von klaus66
Ist ja Gut, ihr habt Recht und ich meine Ruh.
Wenn man stundenlang die Doku studiert und die betreffenden Artikel mindestens 20 mal gelesen und sein Problen auch nach etlichen Versuchen immer noch nicht gelöst hat, dann versucht man halt entnervt Rat bei anderen zu finden. Wenn ich dann allerdings nur Verweise auf die Doku bekomme, bin ich schon ein wenig frustriert.