Signale von QTableView

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
samufi
User
Beiträge: 2
Registriert: Donnerstag 26. Mai 2011, 13:44

Hallo,
ich bin noch ziemlich neu, sowohl in Python als auch in Qt - deshalb habe ich einige Grundlegende Fragen, auf die ich in der Dokumentation und anderen Foren und Threads leider keine Antwort gefunden habe.
Ich versuche gerade eine Datenbank mittels Pythen und Qt zu schreiben. Dafür möchte ich QTableView, am besten zusammen mit QSqlRelationalTableModel, nutzen.
Allerdings möchte ich, dass beim Eingeben (beim Drücken der Taste oder beim "Eintreten" in ein Feld der Tabelle) und/oder beim Ändern des Feldes (also dem "Austreten") spezielle von mir festgelegte Aktionen ausgeführt werden. So möchte ich beispielsweise beim Eintreten in manche Felder diese zu einer Combobox machen (mit QTableView.setIndexWidget) oder die Daten noch manipulieren, bevor sie in die Datenbank geschrieben werden.
Dazu müsste ich entweder mit der Connect-Methode arbeiten oder aber die betreffenden Ereignisse überschrieben. Dass ich nicht weiß, welches der Ereignisse gerade das ist, was ich brauche, könnte ich durch Probieren ändern. Allerdings muss ich ja für meine Aktionen irgendwie den QModelIndex des Kästchens der Tabelle herausfinden, das gerade bearbeitet wird. (also die Information, welches Kästchen gerade betreten wird, das also in eine Combobox umzuwandeln ist) Das sollte das Ereignis doch eigentlich mitliefern. Allerdings weiß ich nicht, wie ich auf diese Informationen zugreifen kann. In einem anderen Beispiel ging es so:

Code: Alles auswählen

    def dropEvent(self, event):
        self.setText(event.mimeData().text()) 
Event liefert also mit mimeData Daten bezüglich des Events. Aber die Events, die ich probiert habe hatten irgendwie keine Eigenschaft namens mimeData.
Kann mir also jemand sagen (am besten auch ein kleines Beispiel geben) wie ich das im konkreten Fall formulieren müsste? Und gibt es vielleicht einen Weg, über den ich mir solche Fragen in Zukunft selbst beantworten kann? (Z.B. eine Seite, auf der alle Events mit Beschreibung aufgelistet ist) Die help()-Funktion ist da irgendwie nicht so aufschlussreich...
Da ich diese Aktionen für ganze Spalten gleich haben möchte, hätte ich jetzt mit einer if-Klausel gearbeitet - etwa in dem Sinne:

Code: Alles auswählen

If [Feldname] == "Name": [Aktion]
- gibt es dafür noch eine elegantere Formulierung?
Dann möchte ich gerne noch festlegen, was passiert, wenn ich auf den Spaltennamen klicke (ich möchte gerne die Tablelle nach diesem Kriterium sortieren lassen). Gibt es dafür ein vorgefertigtes Event?
Ich hoffe, dass meine Ausführungen verständlich waren - ansonsten erkläre ich mich gerne noch mal.
Allen Helfern schon mal ein großes Dankeschön im Voraus!
Herzliche Grüße,
Samufi

Edit: Wenn das aus irgendeinem Grunde nicht gehen sollte oder meine Frage schlecht gestellt ist, teilt mir das bitte mit - sonst bleibe ich an dieser Stelle hängen!
samufi
User
Beiträge: 2
Registriert: Donnerstag 26. Mai 2011, 13:44

Hmmm... :K Hat das irgend einen bestimmten Grund, dass keiner Antwortet? Wisst ihr vielleicht, wo ich sonst nachschlagen/nachfragen kann? Ich brauche bei dem Punkt wirklich Hilfe!
Antworten