PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tabelle mit integriertem Loockup - PyQt



samufi
10-05-2011, 19:12
Liebe Wissende,
ich habe diese Frage schon in einem anderen Forum gepostet, aber da war total tote Hose. Ich weiß nicht, ob ich hier bei mrunix.de richtig bin (da die Frage wohl ziemlich Qt-spezifisch ist, auch wenn ich auch für andere Lösungen offen bin) und ob ich den Thread richtig eingeordnet habe. Ich versuche es einfach mal trotzdem. :)
Ich bin gerade dabei, in Python ein Datenbankverwaltungsprogramm zu schreiben. Um das GUI zu erstellen möchte ich gerne den Qt-Designer, bzw. die Pythen-Qt-Bindings (PyQt) benutzen. Ich bin noch sehr neu und unerfahren sowohl in Python als auch in Qt.
Um die Daten darzustellen eignet sich bestimmt das Table Widget. (Wenn es für solche Anforderungen etwas besseres gibt, dann immerher damit!) Nun möchte ich, dass manche Felder Lookup-Tabellen (bzw. Combo Boxen) bereitstellen, die z.B. bisher in dieses Feld eingegebenen Daten zeigen. Das Design derselben als Lookup ist dabei eigentlich überhaupt nicht wichtig, es sollen vor allem automatische Vervollständigungsvorschläge angezeigt werden - ähnlich wie in den Addressleisten vieler Browser, wo bei Eingabevon "go" z.B. alle zuletzt besuchten Seiten, deren Addressen ein "go" enthalten, angezeigt werden. Wichtig dabei ist, dass nicht nur angezeigt wird, sondern der Benutzer mit den Pfeiltasten in den Vorschlägen navigieren kann - eben ganz wie in den Browsern.
Leider habe ich überhaupt keine Idee, wie ich das mit Qt realisieren könnte - hoffe aber, dass es geht. Wenn ihr mir da helfen, einen groben Plan geben könntet, wäre das super. Falls meine Ausführungen nicht verständlich genug sind, ergänze ich gerne!
Herzliche Grüße,
Samufi

undefined
12-05-2011, 20:17
Wundert mich nicht das du keine Antwort bekommen hast weil deine Vorstellungen an dein Programm zum gehobenen Erfahrenkreis zählt.
Ich selbst verwende kein Python..
Jedoch die Anhaltspunkte die du erlernen solltest kann ich dir geben.
Die Stichworte sind in Qt-c++ QAbstractItemModel,QAbstractItemDelegate und QCompleter.
Suche dir ein Paar Beispiel zu diesem Thema in pyqt zb:
http://stackoverflow.com/questions/2032682/pyqt-custom-item-delegate-for-qtablewidget
http://stackoverflow.com/questions/4827207/how-do-i-filter-the-pyqt-qcombobox-items-based-on-the-text-input

viel Glück ;)

samufi
16-05-2011, 09:12
Vielen Dank dir, undefined! Ich werd mich gleich mal ranmachen und schaun, wie sich das gebrauchen lässt. Ich habe mittlerweile herausgefunden, dass Qt auch ein eigenes Datenbankobjekt hat, was nicht (nur) mittels SQL mit der Datenbank kommuniziert. Anscheinend hat es auch ein von mir gewünschtes Widget, auf jedem Fall sieht das hier (http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qtsql.html) - auf dem Screenshot ziemlich weit unten - so aus, als ob mein Wunsch schon erfüllt wäre. Leider stimmt der Code nur nicht mit Python (3) überein und ich konnte es noch nicht umsetzen. Es gibt für QtSql anscheinend leider nur eine dürftige Dokumentation. Auf jeden Fall werde ich nun auch in dieser Richtung weiter suchen.