Seite 1 von 1

Mehrfachvererbung von QObject umgehen?!

Verfasst: 28. Juni 2006 13:52
von Bitz
Hallo zusammen,

Vielleicht kann mir jemand von euch einen Tipp geben wie ich mein Problem lösen kann.

Ich entwickle gerade an einem embedded Linux System eine GUI. Diese GUI wird nur über ein Touchpanel gesteuert. Ich habe also keine Tastatur eingaben. Trotzdem soll es möglich sein, in bestimmten Textfeldern Variablen(sagen wir integer) zu ändern.


Mein Ansatz sieht wie folgt aus:

Ich habe ein eigenes Label welches von QLabel erbt. Die mousePressEvent(QEvent *event) wird so überschrieben, dass bei klicken des Labels ein Panel auf dem Display erscheint auf dem Buttons zur Bearbeitung des Integers enthalten sind (z.B. + und -).
Damit mein Panel weiss welches Label verändert wird wird bei dem mousePressEvent nciht nur das Panel angezeigt sondern auch ein Pointer von dem geklicketn Label übergeben.

Soweit so gut, das ganze funktioniert auch, aber mir wäre es lieber gewesen das ganze unabhängiger zu lösen.

Dies ist aber für mich als Qt Neuling nciht so einfach zu realisieren.
Ich hab mir erst folgendes gedacht:
Ich erstelle eine Klasse Element welches von QObject erbt. Als variable besitzt es einen Text und als Signal ein changedValue(QString).
Dann wollte ich, dass mein Label(von Oben) zusätzlich von Element erbt. Damit dem Panel es später egal sein kann ob ein QLabel oder ein QTableWidgetItem geklickt wurde. So dass das Panel später nur noch auf die Funktionen von Elemnt zugreifen muss. Natürlich wird dann das ganze dem Panel als Element pointer überreicht.

naja das ganze funktioniert ja nicht weil es bei Mehrfachvererbung im Zusammenhang mit QObject scheitert.
Vielleicht kann man ja auch mit Hilfe eines Interfaces oder ähnlichem dem Label eben sagen dass er das Signal changedvalue(QString) und eine Textvariable, samt getter/Setter-Methoden besitzen muss. Gibt es diese Möglichkeit unter Qt??

Mein Ziel ist es das einzublendende Panel eben auf alle Arten von verstellbaren Widgets zu verwenden. Deshalb wollte ich eine Klasse Element anlegen die dies handhaben kann.

Vielleicht hat von euch jemand einen Lösungsansatz zu meinem Problem oder kann mir sonst irgendwie einen Tipp geben.
Ich hoffe der Text ist verständlich. Wenn Fragen und/oder Unklarheiten herrschen dann einfach stellen.

Gruß
Bitz