Programação em GUI/Eventos, sinais, slots e callbacks
A comunicação entre os diversos componentes (programa raiz, widgets, mouse, teclado, etc) que formam um programa em interface gráfica do usuário é feita através de eventos, sinais, slots e callbacks.
Normalmente, o programa fica "dormindo" no programa raiz até que ocorra algum evento.
Essa passagem de controle é feita usando a idéia de sinais. Quando um evento ocorre, como o pressionamento de um botão do mouse, o sinal apropriado será emitido pelo widget que foi pressionado. Há sinais que todos os widgets herdam (por exemplo, um sinal para destruir o widget pai), e há sinais específicos de um certo widget ou conjunto de widgets.
Para fazer um botão realizar uma ação, configuramos um tratador de sinal para capturar esses sinais e chamar a função apropriada. Isso é feito com uma função em que um dos seus argumentos é chamado de callback. A exceção notável é o toolkit Qt, que, em vez de callbacks, faz a conexão entre os widgets através de sinais e slots [1]
Exemplos
[editar | editar código-fonte]- Na linguagem C, exemplos de GTK+: GTK+/Começando
- Em Python, toolkit Tk: Python/Tkinter/Ligando eventos a callbacks
- Em C++, toolkit Qt: Qt/Sinais e slots
- Em Java, toolkit Swing: Java/Swing/Eventos e Action listeners
Em outras línguas:
- Em Python, toolkit Python/PyGTK: en:PyGTK For GUI Programming/Events
Ver também
[editar | editar código-fonte]- Eventos, na wikipedia em inglês
- Callback, na wikipedia em inglês
- Signals e Slots, na wikipedia em inglês
Referências
- ↑ Signals and Slots - documentação (em inglês) do Qt