Konzeptuelles Problem bei dem C++"Code" erstellt werden soll
Verfasst: 10. Mai 2013 10:09
Hallo!
Ich hätte eine Frage zu einem konzeptuellen Problem...
Ich arbeit derzeit mit Qt an einem Baummodell (Tree Item View). Das kann man dann beliebig auslegen. Nun stehe ich vor folgendem Hindernis: Es ist möglich eine zusätzliche Spalte einfügen zu lassen. In dieser Spalte steht dann immer ein gewisser Datentyp oder besser gesagt dort findet man einen entsprechenden delegate zum editieren der Daten in der Spalte. Um auszuwählen was für eine Spalte man einfügen will gibt's einen Dialog, in dem man "vorgefertigte" Typen von Spalten auswählen kann. An der Stelle kommt dann mein Problem ins Spiel...
Es soll halt möglich sein nachträglich neue Spaltentypen anzulegen und damit das dann möglich einfach geht soll das Ganze dann "modular" ausfallen. Das heißt es wird irgendwo angegeben, dass Spaltentyp XYZ den Namen "ABC" hat und delegate "DEF" zum Einsatz kommen soll und der Rest wird von einem "Manager" übernommen (also das Aufführen des neuen Spaltentyps in der Auswahlliste und so weiter und so fort). Der Haken besteht nun beim delegate. Nachdem der jeweilige Spaltentyp gewählt worden ist, soll dann eben eine neue Spalte eingefügt werden. Hierbei wird dann der delegate ja mit einem "new" ins Leben gerufen und dann entsprechend den Zellen der Spalte zugewiesen. An dieser Stelle hänge ich nun...
Mein Problem: Das Folgende kann ich in C++ nicht schreiben.
Geht ja nicht, weil sich da ja erst zur Runtime entscheiden würde was in dem Platzhalter nun genau stehen soll. Kann mir hier jemand unter die Arme greifen mit Tipps wie man das am Besten handhabt? Was ich halt irgendwie bräuchte wäre eine Funktion die quasi das macht was ich oben im Code-Fenster geschrieben habe. Ich weiß jetzt halt nicht wie ich es anstellen soll, dass eine Klassenbezeichnung halt wie eine Variable zu verwenden ist. Aber vielleicht geht's natürlich auch einfacher...
Ansonsten müsste ich da halt eine lange "if-Liste" anlegen wo der Code zum erzeugen des jeweiligen delegates drinsteht und in der beim Spaltenerzeugen nach dem richtigen Abschnitt gesucht wird. Da das jeweils dann auch nur wenige Zeilen Code sind wäre es schon ok wenn man beim Anlegen eines neuen Spaltentyps halt auch hier seinen Code per Hand reinsetzen muss. Schöner wäre es aber eben schon wenn das automatisch übernommen werden könnte...
Ich hätte eine Frage zu einem konzeptuellen Problem...
Ich arbeit derzeit mit Qt an einem Baummodell (Tree Item View). Das kann man dann beliebig auslegen. Nun stehe ich vor folgendem Hindernis: Es ist möglich eine zusätzliche Spalte einfügen zu lassen. In dieser Spalte steht dann immer ein gewisser Datentyp oder besser gesagt dort findet man einen entsprechenden delegate zum editieren der Daten in der Spalte. Um auszuwählen was für eine Spalte man einfügen will gibt's einen Dialog, in dem man "vorgefertigte" Typen von Spalten auswählen kann. An der Stelle kommt dann mein Problem ins Spiel...
Es soll halt möglich sein nachträglich neue Spaltentypen anzulegen und damit das dann möglich einfach geht soll das Ganze dann "modular" ausfallen. Das heißt es wird irgendwo angegeben, dass Spaltentyp XYZ den Namen "ABC" hat und delegate "DEF" zum Einsatz kommen soll und der Rest wird von einem "Manager" übernommen (also das Aufführen des neuen Spaltentyps in der Auswahlliste und so weiter und so fort). Der Haken besteht nun beim delegate. Nachdem der jeweilige Spaltentyp gewählt worden ist, soll dann eben eine neue Spalte eingefügt werden. Hierbei wird dann der delegate ja mit einem "new" ins Leben gerufen und dann entsprechend den Zellen der Spalte zugewiesen. An dieser Stelle hänge ich nun...
Mein Problem: Das Folgende kann ich in C++ nicht schreiben.
Code: Alles auswählen
KLASSENPLATZHALTER editor = new KLASSENPLATZHALTER;Ansonsten müsste ich da halt eine lange "if-Liste" anlegen wo der Code zum erzeugen des jeweiligen delegates drinsteht und in der beim Spaltenerzeugen nach dem richtigen Abschnitt gesucht wird. Da das jeweils dann auch nur wenige Zeilen Code sind wäre es schon ok wenn man beim Anlegen eines neuen Spaltentyps halt auch hier seinen Code per Hand reinsetzen muss. Schöner wäre es aber eben schon wenn das automatisch übernommen werden könnte...