sqlite tabelle in QTableView anzeigen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
vorlautboy
User
Beiträge: 38
Registriert: Sonntag 7. Dezember 2008, 18:43

Hallo Leute,

ich versuche gerade mir eine sqlite tabelle in einem view anzeigen zu lassen, was soweit auch klappt, nur gefällt mir die darstellung nicht so ganz. ich verwende als model ein QSqlTableModel und als view ein QTableView.

1. wie kann ich den vertikalen header ausblenden? er stimmt meistens eh nicht mit der ersten spalte der tabelle ("ID") überein (wenn bspw. eine reihe gelöscht wird) und ist auch sonst überflüssig.

2. für das view hätte ich gerne folgendes verhalten: ein einfacher klick auf ein feld markiert die ganze zeile (so, als ob man auf den vertikalen header klicken würde), ein doppelklick auf ein feld started einen dialog (das klappt schon). damit soll verhindert werden, dass die daten direkt in der tabelle verändert werden können.
lunar

Wenn du verhindern möchtest, dass Elemente innerhalb der Tabelle bearbeitet werden, dann dürfte es – nach meinen Verständnis der Dokumentation – reichen, ".setEditTriggers(QAbstractItemView.NoEditTriggers)" auf dem betreffenden View-Exemplar aufzurufen. Um bei einem einzelnen Klick die gesamte Zeile auszuwählen, musst du ferner ".setSelectionBehaviour(QAbstractItemView.SelectRows)" aufrufen. Steht alles in der Doku ;)

Edit: Beide Eigenschaften kannst du meines Wissens nach übrigens auch direkt im Designer setzen.
vorlautboy
User
Beiträge: 38
Registriert: Sonntag 7. Dezember 2008, 18:43

lunar hat geschrieben:Wenn du verhindern möchtest, dass Elemente innerhalb der Tabelle bearbeitet werden, dann dürfte es – nach meinen Verständnis der Dokumentation – reichen, ".setEditTriggers(QAbstractItemView.NoEditTriggers)" auf dem betreffenden View-Exemplar aufzurufen. Um bei einem einzelnen Klick die gesamte Zeile auszuwählen, musst du ferner ".setSelectionBehaviour(QAbstractItemView.SelectRows)" aufrufen. Steht alles in der Doku ;)

Edit: Beide Eigenschaften kannst du meines Wissens nach übrigens auch direkt im Designer setzen.
Danke für deine Hilfe! Dass das in der doku steht dachte ich mir schon, habs aber leider nicht gefunden und hatte auch keine ahnung wonach ich suchen soll ...

Edit: verticalHeaderVisible kann ebenfalls direkt im Designer gesetzt werden.

Edit2:
Edit: verticalHeaderVisible kann ebenfalls direkt im Designer gesetzt werden.
nur leider scheint das keine wirkung zu haben :(
ich muss den header immer manuell auf setVisible(False) setzten, dass er auch wirklich nicht mehr sichtbar ist... :x
Antworten