Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

10. Qt - komunikace komponent

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.

Deklarace slotu třídy je podobná deklaraci metody s tím, že je specifikace viditelnosti rozšířena o klíčové slovo 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)

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 ); }
);

courses/b2b99ppc/tutorials/10.txt · Last modified: 2022/04/07 11:00 by nentvond