Hallo,
ich habe eine Frage, die mich schon seit einiger Zeit beschäftigt: Wenn ich ein QListWidget (oder irgendeine andere Auswahlliste) habe (auch Tabellen o.ä.), füge ich bislang Einträge einfach nur als String hinzu (Also z.b. mit addItem("Test"). Das klappt ja auch schön und gut, allerdings habe ich dann danach das Problem, auf die dazugehörigen Informationen zuzugreifen.
Ein Beispiel:
Ich habe eine Liste mit mehreren Objekten. In das QListWidget soll nun von jedem Objekt nur das name-Attribut eingefügt werden (Bis hierhin kein Problem). Wenn ich dann in dem QListWidget einen Eintrag auswähle, sollen die anderen Attribute in einem zweiten Widget erscheinen.
Ich kann jetzt natürlich einfach den Namen oder die Position im QListWidget mit dem in der ursprünglichen Liste vergleichen, aber irgendwie scheint mir das etwas fehlerbehaftet zu sein: Der Name könnte ja doppelt vorkommen und anhand der Position ist eventuell auch nicht so gut (Vielleicht lässt sich die Reihenfolge im QListWidget ändern). Am einfachsten wäre es daher, wenn ich in das QListWidget direkt das Objekt selber einfügen könnte, und wenn dann etwas angeklickt wird, gibt das QListWidget das Objekt selber zurück.
Geht das wohl irgendwie oder muss ich das immer umständlich mit der Position oder dem Namen erledigen? Ich habe schon etwas in der Dokumentation geschaut, aber dort muss anscheinend immer ein QListWidgetItem hinzugefügt werden, was anscheinend nur Text und Icons halten kann, aber keinen Verweis auf ein Objekt selber.
Danke
Objekt in ein QListWidget/QComboBox/usw einfügen
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Schau Dir mal die Model zentrierten Klassen von Qt an; hier wird das von Dir selber bemerkte Problem schön als Motivation zur Einleitung in die Thematik aufgegriffen
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ah, also muss ich mich wohl doch mit der Model-View-Architektur beschäftigen Da wollte ich mich noch ein wenig drum drücken bis ich etwas fitter allgemein mit Python und Qt bin
Naja, ich habe es jetzt zuerst einmal recht simpel mit der Position gemacht, aber ich schau mir jetzt mal das Tutorial an. Wenn das gut ist, werd ich das wohl noch implementieren.
Danke
Naja, ich habe es jetzt zuerst einmal recht simpel mit der Position gemacht, aber ich schau mir jetzt mal das Tutorial an. Wenn das gut ist, werd ich das wohl noch implementieren.
Danke
- Madmartigan
- User
- Beiträge: 200
- Registriert: Donnerstag 18. Juli 2013, 07:59
- Wohnort: Berlin
Nur als Anmerkung, die Referenzierung über die "Position", du meinst sicher den Index, ist nicht fehlerbehaftet oder etwas Halbgares sondern exakt wie diese einfachen Widget zu verwenden sind.
QListWidget, QTableWidget usw. sind eben genau für die Anwendungsfälle vorgesehen, bei denen du dir um MVC keine Gedanken machen willst/musst. Sollten sich Indices ändern, kann man darauf reagieren und etwaige, wie in deinem Beispiel abhängige, Listen umsortieren.
QListWidget, QTableWidget usw. sind eben genau für die Anwendungsfälle vorgesehen, bei denen du dir um MVC keine Gedanken machen willst/musst. Sollten sich Indices ändern, kann man darauf reagieren und etwaige, wie in deinem Beispiel abhängige, Listen umsortieren.
Wenn du sowieso Einsteiger bist, kannst du dir auch gleich MVC aneignen. Das schadet nicht!Hellstorm hat geschrieben:Da wollte ich mich noch ein wenig drum drücken bis ich etwas fitter allgemein mit Python und Qt bin