Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Klassenmethode bei meherern Instanzen derselben Klasse aufrufen

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.12.1999
    Ort
    Stuttgart
    Beiträge
    259

    Klassenmethode bei meherern Instanzen derselben Klasse aufrufen

    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
    IRC: irc.euirc.net #tux

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Frage:
    wenn drei Widgets immer das selbe zeichnen sollen, warum nimmst du nicht drei mal eine Instanz der selben Klasse?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    25.12.1999
    Ort
    Stuttgart
    Beiträge
    259
    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
    IRC: irc.euirc.net #tux

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    25.12.1999
    Ort
    Stuttgart
    Beiträge
    259
    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
    IRC: irc.euirc.net #tux

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •