Christoph Holzheuer 3e7b65dca5 add signal prototypes
2025-09-02 16:58:56 +02:00
2025-08-22 22:57:06 +02:00
2025-08-27 14:06:31 +02:00
2025-09-02 16:58:56 +02:00
2025-08-31 14:38:11 +02:00
2025-08-22 22:57:06 +02:00
2025-08-22 22:57:06 +02:00

XTree

Also, noch mal von vorn:

  • Es geht um das Editieren von XML Daten in einer baumartigen Darstellung am Bildschirm.

  • Es handelt sich vorwiegend um technische Daten: Strom, Spannung, unterschiedliche Betriebsparameter und sowas.

  • Die Qt Viewerklassen arbeiten feldbasiert, die Datenfelder heissen 'Items', die Basisklasse zu einem Datenfeld heisst bei uns XQItem

  • Unser Darstellung der Datenfelder ist im Prinzip erstmal tabellenartig, bla blu

  • Die QtLib unterscheidet zwischen 'rendering' und 'editing'

  • bla blub

Also: itemtypes werden einfach beschrieben, mit properties, wie die properties intern implementiert werden, ist erstmal egal: ein type sheet

pattern: model-view-controller qt: model-view wir: modelhub only

--

ein ItemType aggregiert gemeinsame Eigenschaften von Items, z.b. UnitType, EditorType, RenderTypezusammen, die ein Gruppe von Items gemeinsam

Old stuff:

Getting started

Das working directory muss aufs source directory zeigen, da liegen unter xml/ die Testfiles.

Wo ich hinwill

  • Alle models, menus etc. sollen in XML beschrieben werden, siehe xml/modelsheet.xml
  • Es gibt nur eine Modelklasse: XQModel (ist ein QStandardItemModel)
  • Datenlogik und Anwendungslogik sollen getrennt sein
  • Dazu werden die Datenknoten (composites) in einen Wrapper verpackt und in den Items 'versteckt'
  • Für jede Editorklasse XyzEditor.cpp gibt es eine Klasse XyzHub.cpp
  • Im XyzHub wird die Anwendungslogik implementiert, d.h. die SIGNALs der UI werden mit Operationen auf das Model verbunden
  • Operationen auf Datenknoten werden für die Anwendung transparent von der Datenschicht ausgeführt
  • Die genaue Implementierung dafür ist mir noch unklar:
  • ZQNode::nodeManager.applyCommand( ZQCommand( ZQ::PasteNode, ZQNode& ) ) ???

Basisklassen

  • znode::zbasic_node<string_type> Knotenabstraction, vgl. std::basic_string<char_t>
  • ZQNode template-Instanziierung von zbasic_node mit QString
  • XQModel ein QStandardItemModel mit ZQItems
  • XQItem ein QStandardItem mit einem XQNodeWrapper
  • (Sauberer wäre ein eigenes Model aus einem QAbstractItemModel, aber das ist dann wirklich Arbeit ...)
  • XQNodeWrapper verpackt einen ZQNode* und vermittelt dessen Attributes an die ViewItems
  • XQNodeManager operations on nodes, gibts noch nicht.
  • Eigentlich znode::znode_manager<zbasic_node<string_type>...> ... für alle Anwendungsfälle
  • XQModelReader erzeugt QModels aus XML, siehe XML/modelsheet.xml
  • XQModelHub Datenmanager-Klasse, hier läuft alles zusammen
  • class XQModelHub : public XQModel, public XQModelReader: etwas fragwürdig, spart aber leidige Verpointerungen
Description
No description provided
Readme 492 KiB
Languages
C++ 98%
QML 1.6%
QMake 0.4%