Aktualisierungen serverseitig

Beispielmodul: hellotypes, Property live.

Alle vorherigen Seiten reagierten auf einen Schreibzugriff vom Client. Ein Modul kann seine eigenen Werte auch selbst verändern, typischerweise über einen QTimer:

QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, [this]()
{
    mValue += 2.0;
    getEltPrg("live", "progress")->setPrgValue(mValue, true);
});
timer->start(500);

Hier gilt keine Permission-/directedit-Regel: dieser Pfad läuft nie über einen Schreibzugriff vom Client, das Modul ändert direkt seinen eigenen Datastore.

Die Anzeige organisieren: devcat und group

devcat erzeugt einen Tab in der Oberfläche; group einen Unter-Tab innerhalb eines devcat. Zwei Properties, die sich denselben devcat teilen, erscheinen im selben Tab, eine unter der anderen.

Ein Tab pro Property, für eine übersichtliche Darstellung

Jeder Property einen eigenen devcat zu geben vermeidet es, mehrere schwer lesbare Blöcke in demselben Tab zu stapeln — besonders nützlich, sobald eine Seite mehrere unterschiedliche Datenfamilien zeigt (wie dieses Modul).

Häufig aktualisierte Properties isolieren

Eine Property wird komplett neu an den Client gedumpt, sobald sich auch nur eines ihrer Elemente ändert. Animierte Elemente (zum Beispiel alle 500ms) mit selten geänderten Elementen — ein Bild, ein Videostream — in derselben Property zu mischen, lässt letztere bei jedem Tick grundlos neu laden/springen.

Best Practice: Häufiges von Seltenem trennen

Häufig aktualisierte Elemente in ihre eigene Property isolieren, selbst innerhalb derselben konzeptuellen Familie (hier: “die Anzeigetypen”). Das Beispielmodul trennt so display (statisch: Licht, Bild, Video) von live (animiert: Balken, Spinner).