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

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

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?
Zuletzt geändert von klaus66 am Freitag 14. August 2009, 14:44, insgesamt 1-mal geändert.
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Es gibt hier ein eigene PyQt-Forum. Da passt der Post besser hin (zumal man nur implizit erkennt, dass Du Dich auf Qt beziehst ;-) )
lunar

Und lies doch bitte die Dokumentation zu QVariant. Dort steht, mit welche Methoden Du an den Inhalt eines solchen Objekts herankommst!
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

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()
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
vorlautboy
User
Beiträge: 38
Registriert: Sonntag 7. Dezember 2008, 18:43

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.
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 ;)
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

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.
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
Antworten