Seite 1 von 1

Datenbank

Verfasst: 3. November 2010 14:46
von darkshine
Hallo Forum,

Meine Software erkennt verschiedene Geräte, z.B Gerät A, B und C. Ausserdem habe ich zwei Buttons 1 und 2. Je nachdem welches Gerät erkannt wird, sollen unterschiedliche Buttons sichtbar sein, z.B bei Gerät A Button1, bei Gerät B Button2 und bei Gerät C Button A und B.

Wie gehe ich dies am Besten an? Ich löse es im Augenblick in einem txt-File
Die Geräte stehen jeweils in einer Zeile und dahinter welche Buttons sichtbar sein.

Geraet A,ButtonA=true,ButtonB=false
Geraet B,ButtonA=false,ButtonB=true
Geraet C,ButtonA=true,ButtonB=true

Wenn ein Gerät angeschlossen ist, dann durchlaufe ich den String und suche die entsprechende Stelle.
Dies klappt ja auch soweit, aber ich denke da gibt es bessere Lösungen. Gerade wenn die Geräteliste länger wird

Könnt ihr mir Tipps geben, welche Qt Funktionen ich da am Besten nutzen könnte?

Vielen Dank

Verfasst: 3. November 2010 16:49
von padreigh
signal/slot?

Wenn die "EntdeckeObGerätADaIstKlasse" von QObject erbt, gib ihr n SIGNAL GeraetAissDa() und connecte das so das das Signal den Button sichtbar macht ... initial alle Buttons unsichtbar .. zum Beispiel.

Verfasst: 3. November 2010 16:50
von upsala
Wenn die Geräteliste kurz ist (<100-1000 Einträge) und selten durchlaufen wird würde ich es so lassen wie es ist.

Ansonsten kannst du dir eine QMap/QHash + eine struct dazu und die Daten darin ablegen.
Oder 2 QSet und darin alle ablegen, wo der Button gesetzt sein soll

Verfasst: 3. November 2010 16:54
von RHBaum
Oh je, da denkst Du aber noch sehr wenig abstract ... oder ich erkenn das Problem ned richtig :oops:

Mit den geraeten willst du doch spaeter sicher irgend was anfangen ...
Also wirs doch sowas wie treiber haben (die fuer eine bestimmte "Art" oder "Klasse" an geraeten zustaendig sind, sowie instanzen davon (definierte geraete die auch physikalisch angeschlossen sind ) ....

Damit koenntest Du doch schon die Buttons und funktionalitaet regeln ?

Erkennt die "software" oder das "system" selber welche geraete wo installiert sind ?

Verfasst: 4. November 2010 07:37
von darkshine
Es sind keine Geräte direkt installiert. Sie sind an einem ComPort angeschlossen. Wenn ich nach der Verbindung ein "X" sende, dann senden die mir Ihre Kennung (z.B Gerät A) in einem String. Den lese ich dann aus.

Jedes Gerät besitzt unterschiedliche Eigenschaften, deshalb sollen dann einige Buttons sichtbar sein oder nicht.
Es könnte aber noch weiter gehen und z.B andere Menüeinträge besitzen.
In Zukunft können auch neue Geräte hinzukommen und oder Alte wegfallen.

Ich möchte es sehr flexibel und einfach :-) gestalten. Mit einem String ist es recht einfach, allerdings könnte die Pflege irgendwann zu einem Porblem werden.
Noch ein vielleicht wichtiger Punkt. "Gerät A" muss nicht immer "Gerät A" heissen. Es könnte z.B auch auf ein "X" "Device A" senden. Es handelt sich dann um ein "Gerät A" sendet aber leider eine andere Kennung :( auch so etwas muss ich erkennen.

Die Anzahl der Geräte liegt bei ca.20, wobei jedes Gerät zusätzlich noch ca. 2-4 unterschiede Kennungen haben kann (nicht muss).