Zugriff auf Signal

Alles rund um die Programmierung mit Qt
Antworten
ChornHulio
Beiträge: 62
Registriert: 7. November 2008 11:02

Zugriff auf Signal

Beitrag 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!
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
ChornHulio
Beiträge: 62
Registriert: 7. November 2008 11:02

Danke!

Beitrag von ChornHulio »

Danke für die super schnelle Antwort!
Mit der Get-Methode funktioniert das hervorragend!
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

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