Hallo,
ich möchte gerne Konfigurationsdaten, die in einer XML-Datei gespeichert sind, in einer einer Oberfläche editieren.
Die Konfigurationsdaten sind hierarchisch aufgebaut, es gibt Module, die wiederum untergeordnete Module haben können. Die Module haben zusätzlich auch Eigenschaften, die ebenfalls editierbar sein müssen. Diese Eigenschaften haben jeweils einen Namen und einen Wert.
Ich hab mir das so vorgestellt, dass in der Ansicht auf der linken Seite eine Baumansicht (QTreeView) mit allen Modulen dargestellt wird. Wenn man jetzt ein Modul auswählt, sollen rechts davon alle Eigenschaften aufgelistet werden, jeweils mit Namen und Wert. Die Werte sollen editierbar sein, die Namen nicht.
Dazu jetzt meine Frage(n):
Ist es möglich bzw. sinnvoll, die Module mit allen Werten in einem Daten-Modell (QStandardItemModel) abzulegen oder ist es besser, nur die Modul-Hierarchie so zu implementieren und für die Eigenschaften für jedes Modul jeweils separate Tabellen zu benutzen? Oder sollte ich für die Eigenschaften statt einer Tabelle einen Dialog dynamisch erstellen mit Labels und Eingabefeldern?
Ich hab es erst mal so versucht:
- Jedes Modul ist ein QStandardItem (nur eine Spalte)
- Für jede Eigenschaft hänge ich an das entsprechende Modul eine Zeile mit zwei Spalten an; in der ersten Spalte steht der Name und in der zweiten Spalte der Wert für die Eigenschaft.
Damit kann ich dann die Module mit der QTreeView darstellen und wenn ich eines auswähle, werden daneben in einer QTableView die Werte für das entsprechende Modul dargestellt. Allerdings erscheinen dann auch die Namen der Eigenschaften als eigene Elemnte in der TreeView, was ich nicht möchte.
Gibt es eine Möglichkleit, in der TreeView nur die Module darzustellen und nicht die Modul-Eigenschaften? Ist es sinnvoll, das mit einem Proxy Model zu machen, das z.B. alle Zeilen herausfiltert, die nur aus einer Spalte bestehen?
So eine Aufgabenstellung gibt es doch bestimmt bei vielen Projekten. Ich würde mich freuen, wenn mir da jemand einen Tipp geben könnte, wie man so etwas am besten macht.
Konfigurationsdaten in QTreeView darstellen und editieren
Re: Konfigurationsdaten in QTreeView darstellen und editiere
Hat niemand einen Vorschlag? Ich hoffe, ich habe mein Problem einigermaßen verständlich beschrieben.
Re: Konfigurationsdaten in QTreeView darstellen und editiere
Hallo Cpt_Nemo,
ich perönlich finde das was du dir da gebastelt hast ein wenig unübersichtlich. (Liegt vielleicht auch daran, weil ich selbst es noch nicht so gebaut hatte). Das letzte mal als ich soetwas gebaut hatte, habe ich die Module in einzelne Structs zusammengestellt ( mit den jeweiligen Eigenschaften) und in einer Map/List gesammelt.
In dem QTreeView oder QTreeWidget habe ich nur die namen der Module anzeigen lassen, die ich über einen Controller der mir alle Module eines Types gegeben hat. Wenn ich dann ein Modul im dem TreeWidget ausgewählt habe, habe ich wieder über den Controller Daten angefordert (dieses mal den ganzen Datensatz) und in einer selbst zusammengestrickten Oberfläche neben dem TreeWidget angezeigen lassen. Dementsprechend habe ich entschieden, was editierbar sein darf und was nicht.
Vielleicht gibt dir meine Beschreibung ja einen kleinen Gedankenanstoß
ich perönlich finde das was du dir da gebastelt hast ein wenig unübersichtlich. (Liegt vielleicht auch daran, weil ich selbst es noch nicht so gebaut hatte). Das letzte mal als ich soetwas gebaut hatte, habe ich die Module in einzelne Structs zusammengestellt ( mit den jeweiligen Eigenschaften) und in einer Map/List gesammelt.
In dem QTreeView oder QTreeWidget habe ich nur die namen der Module anzeigen lassen, die ich über einen Controller der mir alle Module eines Types gegeben hat. Wenn ich dann ein Modul im dem TreeWidget ausgewählt habe, habe ich wieder über den Controller Daten angefordert (dieses mal den ganzen Datensatz) und in einer selbst zusammengestrickten Oberfläche neben dem TreeWidget angezeigen lassen. Dementsprechend habe ich entschieden, was editierbar sein darf und was nicht.
Vielleicht gibt dir meine Beschreibung ja einen kleinen Gedankenanstoß
Re: Konfigurationsdaten in QTreeView darstellen und editiere
Hallo kiela,
danke für deine Antwort.
danke für deine Antwort.
Ja, vermutlich ist das die bessere Methode, ich werde das mal so ausprobieren. Danke nochmal für den Gedankenanstoß.kiela hat geschrieben:In dem QTreeView oder QTreeWidget habe ich nur die namen der Module anzeigen lassen, ...