Estou generalizando algumas bibliotecas da GUI, mas em um nível muito alto, o conceito mais importante que você precisa entender é que uma GUI é orientada a eventos .
Em um aplicativo de console, sua entrada do usuário geralmente acontece em determinados pontos que você definiu. Você solicita ao usuário, espera a entrada dele, calcula algo com base nessa entrada. Uma das principais diferenças é que a entrada acontece apenas em um lugar, você está lendo o texto da linha de comando ( stdin
em C ++).
Em um aplicativo GUI, você normalmente possui vários locais onde a entrada pode ocorrer, por exemplo, botões que executam ações ou campos de texto diferentes. É aqui que os eventos entram em cena. Por exemplo, clicar em um botão aciona um evento. Esse evento precisa ser tratado por um manipulador de eventos , que geralmente é apenas um método que utiliza um objeto de evento e é chamado quando esse valor é acionado. Como seu botão sabe sobre o manipulador de eventos? Você geralmente assina (ou ouve ).
Aqui está um exemplo "inspirado em C ++", este não é um código QT ou C ++ real.
class MyClickHandler : public ClickListener{
void clickHandler(ClickEvent e){
showAlertBox("The button "+e.getSource().getName()+" has been clicked");
}
};
Ao criar o Button, você registra uma instância da classe MyClickHandler no botão.
...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...
Agora, toda vez que o botão b
é clicado, uma caixa de mensagem aparece dizendo "O botão Salvar foi clicado".
Você pode imaginar que um aplicativo GUI possui dois estágios:
- Estabeleça a GUI: Um curto período na inicialização, onde todos os objetos são criados e conectados entre si.
- O loop de eventos : sua GUI está em um grande loop while e fica parada lá até que um evento seja acionado.
Este é um exemplo muito simples, mas eu recomendo que, com qualquer estrutura que você escolher, tente mostrar uma caixa de mensagem quando um botão for clicado.
Para o framework, existem muitos por aí: No caso do C ++, eu provavelmente recomendaria o Qt.
Um último conselho: fique longe dos designers da GUI até saber o que está acontecendo em segundo plano. Não é tão difícil escrever alguns exemplos simples e entender primeiro o loop de eventos e depois passar para layouts mais complexos.