Seite 1 von 1

Grafische Auswertung von Daten

Verfasst: 7. Februar 2008 10:15
von jd
Hallo Gemeinde.

Problemstellung:

Ich lese den Festplattenplatz auf Linux-System aus, indem ich df -h parse. Nun möchte ich den Platten platz grafisch darstellen (mit Balken), jedoch weiß ich nicht so richtig wie ich das anpacken soll, hat da jemand eine Idee, wie ich meine folgende Lösung (die funktioniert, aber mir nicht gefällt) verbessern kann.

Methode1:

Ich habe im Qt-Designer 2 Frames gebaut, welche verschachtelt sind.
der "Master" Frame hat eine feste breite von 400px, was 100%-used darstellt. In diesem "Master" Frame befindet sich ein weiter Frame der eine dynamische breite hat, bsp: 200px. Diesen inneren Frame verpasse ich dann mit Hilfe von Stylesheet eine Hintergrundfarbe. Was einem die Optik vermittelt, das die Auslastung der Platte 50% ist.

Info - Frameaufbau:
<frame>
<frame>
</frame
</frame

Da an jedem Rechner eine undefinierte Zahl an Partitionen vorhanden ist (bzw ich weiß vorher nicht viele es gibt), muss ich mich auf eine Anzahlt beschränken und nach Priorität sortieren, was auch funktioniert, ich habe mich jetzt auf 10-Partitionen festgelegt.

Was ich mache ist, ich lege alle für jede Partition die Frames im Qt-Designer ein und mit:

Code: Alles auswählen

meinFrame->show();
Blende ich die bei Bedarf ein.

Frage:
Ist meine Vorgehensweise sinnvoll, oder nicht? Gibt es besser Möglichkeiten, dies zu realisieren?

so long
jd

Verfasst: 7. Februar 2008 11:32
von upsala
Du kannst im Designer ein QFrame vorgeben, diesem ein Layout zuweisen, und die weiteren QFrame, die du benötigst dynamisch erzeugen.

Verfasst: 7. Februar 2008 16:37
von jd
Ok, das habe ich gemacht, ich habe eine QFrame + QLabel einem QHBoxLayout zugewiesen (im Designer), Wie kann ich das ganze jetzt "klonen" so das es untereinander eingereist ist? Da muss ich doch mit QVBoxLayout ran oder?. Meine theorie war ich erstelle ein QVBoxLayout indem ein QHBoxLayout ist, indem sich mein QFrame+QLabel befindet. somit müsste ich ja nur das klonen und dem QVBoxLayout zuweisen, aber ich habe im Code irgendwie kein Zugriff auf das Layout und kann im Designer auch kein Objektnamen definieren, oder überlese ich da was?

Verfasst: 8. Februar 2008 11:18
von franzf
Ich finde den Ansatz "gewöhnungsbedürftig" ;) (sry).
Wie wäre es mit:

1) Eine QProgressBar zu verwenden? setMaximum(), setMinimum(), setValue() und schon hast du ein schönes Widget das dir in % anzeigt, wie viel Platte verbraucht ist.

2) Oder was eigenes? Ist nicht so schwer von QWidget abzuleiten, beim Zeichnen die Breite des Widgets zu lesen und entsprechend 2 QRects vom Painter malen zu lassen.

Grüße
Franz