Cześć,
slots oraz signals są to specjalne słowa dla Qt. moc(meta object compiler) używa ich do wykonywania połączeń sygnał=>slot. Aby wykorzystywać taki mechanizm klasa musi dziedziczyć po QObject(lub jego potomka) mieć dodane makro Q_OBJECT
Definicja Q_OBJECT( jest w qobjectdefs.h )
#define Q_OBJECT \
public: \ // skipped details
static const QMetaObject staticMetaObject; \
virtual const QMetaObject *metaObject() const; \
virtual void *qt_metacast(const char *); \
virtual int qt_metacall(QMetaObject::Call, int, void **); \
QT_TR_FUNCTIONS \
private: \ // skipped details
qt_static_metacall(QObject *, QMetaObject::Call, int, void **);
oraz definicje sygnału oraz slotu:
#define slots
#define signals public
Jak widać slots jest pusty więc możesz zadeklarować jako
public slots:
protected slots:
private slots:
i używać jak każdą funkcję składową lub podpiąć do sygnału. Natomiast sygnały zawsze są publiczne i nie należy ich definiować. Ich dostępność jest publiczna gdyż używa się ich do połączeń pomiędzy obiektami.