qt: frage zum connecten zweier klassen...
-
ich habe das in der main funktion:
QObject::connect( window.pushButton_setTime, SIGNAL(clicked() ), &T, SLOT(startTimer() ) );
window ist die hauptklasse, also die die entsteht wenn ich im designer ein neues projekt erstelle.
T ist ein objekt von der klasse TCounter, eine art lcdnumber.TCounter T;
nun wollte ich wissen warum ich wenn ich zwei klassen verknüpfe(bzw deren inhalte)
eine Referenz... ,&T, SLOT(startTimer() ) );
brauche
das ist tcounter:
#include <qlcdnumber.h> #include <qtimer.h> #include "form1.h" class TCounter : public QLCDNumber { Q_OBJECT public: TCounter( QWidget * parent = 0, const char * name = 0); int setTime(int t); int getTime(); void startTimer(); void stopTimer(); QTimer timer; private: int timer_value; public slots: void timeout(); };
mit was hat dieses "&" zu tun, wann muss man es noch anwenden? warum ist es falsch wenn ich keins habe?
mfg
-
&T liefert die Adresse von T.
Das hat nichts mit QT an sich zu tun; an und für sich sollte eine Erklärung dazu in jedem C- oder C++-Buch für Anfänger zu finden sein.
-
aber warum brauche ich dort eine referenz?
-
Das ist keine Referenz sondern ein Zeiger.
&t liefert die Adresse der Instanz t eines Typs T, während T& in der Argumentliste bedeutet, dass eine Referenz verwertet wird.edit: Btw, gibt es einen Grund, warum Du den Thread im Unix-Forum erstellt hast, oder kann ich Dich ins C++-Forum oä verschieben? (Deine Probleme sind nämlich grundlegende Verständnisprobleme der Programmiersprache; das hat IMO nichts mit dem Toolkit zu tun.
-
Qt muss wissen welche Methode von welchem Objekt aufgerufen werden soll. Ebenso will es das aufrufende Objekt und die Methode wissen. Dabei werden die Adressen der Objekte gespeichert. Deshalb musst du die Adresse mitgeben und die bekommst du mit &obj;
-
nman schrieb:
Das ist keine Referenz sondern ein Zeiger.
&t liefert die Adresse der Instanz t eines Typs T, während T& in der Argumentliste bedeutet, dass eine Referenz verwertet wird.edit: Btw, gibt es einen Grund, warum Du den Thread im Unix-Forum erstellt hast, oder kann ich Dich ins C++-Forum oä verschieben? (Deine Probleme sind nämlich grundlegende Verständnisprobleme der Programmiersprache; das hat IMO nichts mit dem Toolkit zu tun.
nun ich ahbe mich noch nicht so sehr mit zeigern auseinandergesetzt. der grund war das ich sinnlose fragen was das connect etc. bedeutet vorbeugen wollte.
Ponto schrieb:
Qt muss wissen welche Methode von welchem Objekt aufgerufen werden soll. Ebenso will es das aufrufende Objekt und die Methode wissen. Dabei werden die Adressen der Objekte gespeichert. Deshalb musst du die Adresse mitgeben und die bekommst du mit &obj;
achso
-
Hast du schon beide Qt Tutorien durchgearbeitet? Wenn nein, dann solltest du es nachholen.
-
ich arbeite daran