QT QPushButton mit eigener Funktion verbinden?
-
Hallo!
Ich beschäftige mich seit geraumer Zeit mit Qt4 und C++ und steh jetzt an einem ärgerlichen Problem, weil ich keine Ahnung hab, wie ich das realisieren kann. (Google raucht schon, aber hab immer noch nichts gefunden)
Mein Problem ist, ich möchte z.B. einen mit Qt erstellten QPushButton beim Klicken eine von mir geschriebene Funktion in meinem cpp programm aufrufen lassen.
Jetzt frag ich mich, wie das möglich ist, denn ich hab keinen Weg gefunden die connect() funktion von Qt meine Funktion aufrufen zu lassen.
bitte um hilfe, und danke schon im vorhinein.
grüße hannes
-
Die Methode, die Du aufrufen möchtest, ist aber ein SLOT und die Klasse, die diesen Slot enthält, hat auch das Macro Q_OBJECT gesetzt, oder?
Du läßt auch uic über den Quelltext laufen, bevor Du den Quelltext durch den Compiler jagst?
Gibt es Fehlermeldungen beim Compilieren?
Gibt es Ausgaben auf der Konsole beim Ausführen des Programms?
Quelltextsnipped, der den Fehler triggert?
Genaue QT-Version?
-
hi, erstmal danke fürs antworten.
ich hab noch nie ne eigene klasse erstellt. weil ich bei der syntax nicht so ganz durchblicke.
ich möchte lediglich bei einem klick auf einen button ein unterprogramm bzw eine funktion aus c++ die ebenfalls mitkompiliert wird aufrufen.
Da ich das window und den button per hand in meiner main.cpp erstellt hab mit den ganzen includes brauch ich uic nicht mehr (soweit ich das beurteilen kann), denn das programm wird kompiliert und funktioniert auch, nur hab ich keine ahnung wie ich dem button sage, wenn du geklickt wirst starte eine nicht in Qt sondern in C++ geschriebene funktion.
Fehler gibts in dem Sinn noch keinen.
Meine Qt version ist 4.3.4 und ich arbeite mit Dev-C++ 4.9.9.2
grüße
-
Ich fürchte, daß Du an dieser Stelle nicht umhin kommen wirst, eine eigene Klasse zu implementieren, da die connect-Methode als 1. und 3. Parameter Zeiger auf Objekte erwarten. Der 2. und 4. Parameter sind das SIGNAL und der SLOT, die Membermethoden der entsprechenden Objekte seien müssen, die in 1. und 3. übergeben wurden.
-
Ja, das hab ich mir fast gedacht... kennst du dich mit klassen aus? Bzw könntest du mir erläutern wie man eine Klasse schreibt?
grüße
-
Ich fürchte, daß das hier zu weit führen würde. Klassen sind eines der Grundkonzepte von C++ und QT hängt sehr stark davon ab. Am besten wird es sein, Du probierst als erstes mit Hilfe eines C++-Tutorials ein kleines Programm mit Klassen ohne jegliche grafische Oberfläche. Wenn Du das Prinzip der Klassen beherrschst, dann kannst Du an ein so komplexes Thema gehen. QT setzt doch einiges an Grundkenntnissen von C++ voraus.
Für Details der QT-Programmierung sei wie immer auf die ausgezeichnete Dokumentation von QT verwiesen...