Seite 1 von 1

Zugriff auf Signal

Verfasst: 16. August 2009 19:41
von ChornHulio
Hallo zusammen,

da ich nicht gerade der OOP-König bin, habe ich hier mal eine Frage:
Ich erzeuge in main.cpp ein Objekt "timerObject", das einen Timer erzeugt. Wie kann ich jetzt in der Main das Signal "timeout" connecten?

main.cpp

Code: Alles auswählen

...
CTimer *timerObject = new CTimer(100);
QObject::connect(timerObject, SIGNAL(timeout()), gui, SLOT(setNewPos()));
...
CTimer.h

Code: Alles auswählen

...
private:
    QTimer *timer;
public:
    CTimer(int);
CTimer.cpp

Code: Alles auswählen

CTimer::CTimer(int pZeitintervall)
{
    aZeitintervall = pZeitintervall;
    timer = new QTimer(this);
    timer -> start(aZeitintervall); //time == 100 --> Jede Sekunde aktualisieren
}
Das funktioniert so nicht. Wie macht man das richtig?
Danke für eure Antworten!

Verfasst: 16. August 2009 19:47
von franzf
Indem du bei so einer minimalen Anwendung nicht versuchst ein QTimer-Objekt zu wrappen. Falls das doch notwendig sein sollte, dann biete doch in deiner CTimer-Klasse einen getter an, der den QTimer-Member zurückgibt, und connecte den in deiner main.
Denn das Problem ist ja, dass CTimer kein QTimer ist, und deshalb auch keine solchen SIGNALS anbietet, sollte aber in der Console eine entsprechende Fehlermeldung geben.

Oder überleg dir gleich, ob du nicht eine MainWindow-Objekt haben willst, in dem die connects und sonstiges erledigt wird, und du in der main nur ein Fenster erstellt und dieses anzeigst.

Danke!

Verfasst: 16. August 2009 20:00
von ChornHulio
Danke für die super schnelle Antwort!
Mit der Get-Methode funktioniert das hervorragend!

Verfasst: 16. August 2009 20:17
von franzf
Bittebitte.
Aber trotzdem: Was macht deine CTimer-Klasse sooo wichtiges, dass die in der Form existieren müsste? Denn was du gezeigt hast, ist das unnötig, da solltest du lieber direkt ein QTimer-Objekt nehmen. Erklär doch mal kurz, was dahinter steckt, vllt. kann man das besser gestalten.

Verfasst: 17. August 2009 09:50
von androphinx
ich muss auch sagen. nimm lieber direkt qt timer, da hast du deutlich weniger aufwand. es macht absolut keinen sinn, nochmal eine extra klasse für einen timer zu schreiben, der einfach nur auf einen anderen timer zugreift...

Mfg androphinx