PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Klassenmethode bei meherern Instanzen derselben Klasse aufrufen



micha
03-12-2002, 22:41
Hi,

Ich hab in einem QPaintEvent 3 QPainter-Instanzen p1,p2 und p3, die auf 3 verschiedene QWidgets genau das Gleiche zeichnen müssen.
Bei jeder Zeichenroutine in 3 Zeilen für p1, p2 und p3 genau den gleichen Funktionsaufruf stehn zu haben, scheint mir hier irgendwie nicht die optimale Lösung zu sein, genau so wenig, wie die QPainter in ein Array zu stecken, und jedesmal eine for-Schleife durchlaufen zu lassen.
Ist es möglich, einer seperaten Funktion einen Zeiger auf die jeweilige QPainter Methode zu übergeben, und dann in dieser Funktion p1, p2 und p3 mit der übergebenen Methode aufzurufen ?
Wenn die Parameter der Funktion und deren Rückgabewert feststehn, dann bekomm ich das hin, aber dann müsst ich ja für jede QPainter Methode, die ich nutzen will, eine extra Funktion erstellen, was widerrum nicht sinnvoll ist...
Die Übergabe eines Zeigers auf eine Funktion mit variablem Rückgabewert und variablen Parameter übersteigt allerdings mein Wissen, any hints ?

Gruß micha

anda_skoa
04-12-2002, 08:28
Frage:
wenn drei Widgets immer das selbe zeichnen sollen, warum nimmst du nicht drei mal eine Instanz der selben Klasse?

Ciao,
_

micha
04-12-2002, 12:53
Hi,

ahh, gut, mit den 3 verschiedenen Widgets meinte ich 3 Instanzen eines Widgets, aber das ändert doch nichts daran, das ich dann trotzdem die 3 Instanzen seperat aufrufen muss, oder reden wir jetzt aneinander vorbei ? ;)

Gruß micha

anda_skoa
04-12-2002, 14:58
Du mußt dann aber nur so etweas machen:

widget1->update()
widget2->update()
widget3->update()

bzw, wenn sie einen gemeinsamen Parent haben
parentWidget->update();

Nachdem sie alle die gleiche Implementation von paintEvent haben, machen sie auch das gleiche.
Du brauchst dich im paintEvent Handler immer nur um das aktuelle Widget kümmern.

Ciao,
_

micha
04-12-2002, 16:41
Klar, hast recht, das verringert den Aufwand dann von 3N auf 3 Funktionsaufrufe.
Das heisst allerdings, dass ich wegen einem einzigen paintEvent eine neue Klasse ableiten muss, na ja ;)
Aber noch mal zu der eigenltich Frage, wäre das prinzipell möglich, die Funktionen als Zeiger zu übergeben ?

Gruß micha

anda_skoa
04-12-2002, 17:11
Original geschrieben von micha
Klar, hast recht, das verringert den Aufwand dann von 3N auf 3 Funktionsaufrufe.
Das heisst allerdings, dass ich wegen einem einzigen paintEvent eine neue Klasse ableiten muss, na ja ;)


Um den Eventhandler zu überschreiben, mußt du ohnehin eine Subklasse machen :)
Darum hab ich ja gefragt, ob das immer das selbe Widget ist.



Aber noch mal zu der eigenltich Frage, wäre das prinzipell möglich, die Funktionen als Zeiger zu übergeben ?


Ich denke nur static Methoden.

Ciao,
_