Datenbank

Alles rund um die Programmierung mit Qt
Antworten
darkshine
Beiträge: 102
Registriert: 20. August 2010 11:39

Datenbank

Beitrag 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
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag 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.
Zuletzt geändert von padreigh am 3. November 2010 16:52, insgesamt 2-mal geändert.
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag 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 ?
darkshine
Beiträge: 102
Registriert: 20. August 2010 11:39

Beitrag 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).
Antworten