Qt - Signals and Slots, Unwissen in C++ verdrängen

White_Fox

Top Contributor
Moin

Ich nehme mir – als absoluter C++-Rooky, ich habe eigentlich nur etwas mit C gearbeitet – gerade Qt vor und versuche, deren Signal-and-Slot-System zu verstehen. Ich kapiere zwar was die erreichen wollen, aber die Codebeispiele sagen mir absolut nichts:

Was bedeuten Zeilen wie public slots: genau? Public als Sichtbarkeitsmodifizierer sagt mir natürlich etwas, aber einen Ausdruck wie slots: (mit Doppelpunkt) kenne ich aus C eigentlich nur als Sprungmarke für den – verpönten – goto-Befehl. Was sind das für Konstrukte und was tun sie genau?
 

KonradN

Super-Moderator
Mitarbeiter
Das ist einfach eine QT Besonderheit. Du hast halt nicht nur den C++ Compiler sondern auch auch den MOC (Meta Object Compiler). Der MOC erzeugt da zusätzlichen Code (moc_MyObject.cpp so Du MyObject als Klasse hattest) in dem dann halt Code für die Slots erzeugt wird.

Das public slots: keine Fehlermeldung gibt, lliegt mit an Makros, die da definiert worden sind. Das ist halt keine C++ Syntax. Das müsste sich dann auch qobjectdefs.h finden meine ich - ebenso wie das Q_OBJECT Makro, das Du ja in der Klasse haben musst (und da diverse Dinge mitbringt, die halt wichtig sind).
 

vish234

Mitglied
Qt verwendet Signale und Slots, um einen ereignisgesteuerten Programmieransatz aufzubauen. Wenn ein bestimmtes Ereignis eintritt, werden Signale ausgegeben, und Slots sind Routinen, die als Reaktion auf diese Signale ausgeführt werden. Wenn beispielsweise eine Taste gedrückt wird, wird ein Signal ausgegeben und eine diesem Signal zugeordnete Slot-Funktion ausgeführt.

Die öffentliche Slots:-Syntax in C++ wird verwendet, um eine Liste öffentlicher Elementfunktionen zu erstellen, die als Reaktion auf Signale aufgerufen werden können. Das Schlüsselwort slots: ist ein Qt-spezifischer C++-Zusatz, um eine Funktion als Slot zu deklarieren. Alle unter den öffentlichen Slots: genannten Funktionen werden als öffentliche Slots deklariert.
 

Neue Themen


Oben