Search
V rámci frameworku QT spolu komponenty komunikují pomocí signálů a slotů. Signály jsou emitovány komponentami (např. při interakci s jejdnotlivých komponent s myší), sloty jsou metody tříd, které ošetřují reakce komponenty na signály. V první fázi seznamování s QT si vystačíme se signály, které mají komponenty vestavěné (typicky to bude signál clicked třídy QPushButton), zatímco sloty budeme vytvářet vlastní. Celá problematika je celkem podrobně popsána na dedikované stránce.
signálů
slotů
Šachovnice
Deklarace slotu třídy je podobná deklaraci metody s tím, že je specifikace viditelnosti rozšířena o klíčové slovo slot
slot
class Object { Q_OBJECT // ... public slots: clickHandler (); };
Aby spolu mohly komponenty derivované z bázové třídy QObject komunikovat, je třeba je propojit. K tomu je možné využít hned několik způsobů
1. QT4 (stále funkční), používá makra SIGNAL a SLOT, které převedou své argumenty na textový literál 1)
SIGNAL
SLOT
connect ( sender, SIGNAL (valueChanged (QString, QString)), receiver, SLOT (updateValue (QString)) );
2. QT5
connect ( sender, &Sender::valueChanged, receiver, &Receiver::updateValue );
3. >QT5 pomocí lambda funkcí
connect( sender, &Sender::valueChanged, [=]( const QString &newValue ) { receiver->updateValue( "senderValue", newValue ); } );