Baumstruktur für Layout einer Seite



  • Hallo,

    Habe folgende Frage; Für das Layout einer Seite suche ich ein Konzept, um dieses zu implementieren. Im Wesentlichen brauche ich dafür eigentlich einfache Rechtecke, also z.B.

    class rect4
    {
    public:
    
        float left, right, bottom, top;
    };
    

    Diese sind voneinander Abhängig, also in eine Richtung. Visuell stelle ich mir das als Baumstruktur vor:

                  pageSize
                  |       |
          renderArea    printArea
                       |         |
               titleArea    calendarArea
                            |    |       |
                      XLabel    YLabel    Cells
                                         |
                                         subCells
    

    Bild

    Also z.B. ist die Seitengrösse (pageSize) gegeben, dazu kommen die Seitenränder und dies ergibt dann den Druckbereich (printArea). Später gibt es z.B. die Anzahl der Jahre, usw.

    Meine Frage ist nun, ob jemand weiss, wie man so etwas am besten implementiert oder ob jemand Tipps hat.

    Vielen Dank 🙂



  • Also im Moment sieht es so aus, dass ich die (Baum-)Struktur in eine Richtung nicht in eine Klassenstruktur umsetze.

    Die Abhängigkeit in eine Richtung ergibt sich auch im Programmablauf.



  • Naja, in gängigen gui-toolkits gibt es halt Rechtecke mit xy-Dimension und xy-Positionen relativ zu einem parent.... Das gibt dann einen Baum wobei die Wurzel dann keinen parent hat (null oder zeigt auf sich selbst) und die ganze Seite / Das Fenster darstellt. Schau dir Qt an oder auch einen HTML-DOM-Baum in Verbindung mit CSS. Wobei letzteres eher dem klassischen Print-Layout entspricht. Der nicht ausgebildete Layouter kommt wohl eher mit dem Qt-Prinzip zurecht (zumindest ich werd bei CSS immer wahnsinnig)...

    Hoffe ich hab dein Anliegen richtig verstanden.

    Hth

    Edit: hier ein link zu einem widget-subwidget-Beispiel. Hatte gehofft was besseres zu finden... Musst du mal selber schauen



  • @dirkski Danke für die Antwort und die Beispiele 🙂

    Beim Ausprobieren bekam ich ein Durcheinander, weil ich die Baumstruktur zuerst mit Komposition zu implementieren versuchte und so die übergeordneten Rechtecke die untergeordneten abhängigen Rechtecke direkt beinhalteten.

    Im Moment initialisiere ich die untergeordneten Rechtecke mit dem übergeordneten Rechteck, behalte aber die Möglichkeit im Hinterkopf, die untergeordneten Rechtecke mit einem Pointer der übergeordneten Rechtecke zu initialisieren.


Log in to reply