Alguém pode explicar como uma GUI funciona e quando devo começar a usá-la? [fechadas]

16

Estou aprendendo C ++ há cerca de um mês e, antes de prosseguir, gostaria de esclarecer essa pergunta tediosa que continuo tendo. Eu sei o que é uma GUI, mas realmente não sei como ela funciona, e talvez exemplos de populares?

Embora eu saiba que a programação da linha de comando é o básico, acho que seria divertido mexer com uma GUI.

Embora eu tenha cerca de 3 milhões de outras perguntas, eu as salvarei: D

David
fonte
1
última linha me fez sorrir :) +1 para isso
Chipre

Respostas:

28

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 ( stdinem 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.

sebastiangeiger
fonte
Se você adicionar um ponto-e-vírgula ao final da definição de classe e tornar a herança pública, seria a sintaxe apropriada / possível do C ++.
Lstor 02/08/19
1
Feito. Mas eu não queria criar expectativas falsas, pois o código não poderá ser executado, afinal. A maior parte da minha experiência está no Swing, o que provavelmente reflete nos nomes das turmas. Os mesmos conceitos serão chamados de maneira diferente em diferentes estruturas.
sebastiangeiger
1
+1 Esta parece ser a única resposta que responde à pergunta (para mim parece que ele não está pedindo apenas cerca de frameworks, ele está perguntando sobre conceitos gerais)
Federico klez Culloca
1
Ewwww .... porcaria de ouvinte feia.
DeadMG
7

Agora é o melhor momento para aprender a representação gráfica da GUI. Como você conhece C ++, eu recomendaria olhar o QT. Ótima documentação, enorme base de usuários e muitos exemplos / tutoriais disponíveis para aprender.

mattnz
fonte
1
+1 para Qt - @David - O Qt possui seu próprio ambiente de desenvolvimento chamado Qt Creator, que é independente, gratuito e relativamente simples em comparação com outros. O Qt é poderoso, intuitivo, extenso, muito bem documentado e com uma base de usuários grande e ativa. É fácil começar e há muitos exemplos para começar a brincar e fazer o que quiser - o que é uma ótima maneira de aprender. Pode ser baixado aqui
Roger Attrill
Estou inclinado a votar isso. O QT incentiva muitas práticas realmente ruins em C ++, se você não sabe o que procurar. - O que você não faz, após apenas um mês de C ++. Além disso, aborda alguns aspectos complexos em C ++. Se possível, eu começaria a programação da GUI em uma linguagem diferente primeiro e me concentraria em obter o C ++ correto.
Konrad Rudolph
3

Você também pode iniciar com o Microsoft Visual Studio C ++ Express . O IDE é muito amigável e fácil de usar (e gratuito!), E você poderá criar seus primeiros aplicativos GUI muito rapidamente ... O que o ajudará a se concentrar no entendimento dos conceitos básicos da programação orientada a eventos , uma abordagem diferente que você precisará dominar.

Você também pode começar diretamente com a criação de aplicativos controlados por WPF, mas eu começaria com o Windows Forms a princípio, que é uma tecnologia a menos, já que é apenas C ++ básico com a API do Windows Forms da Microsoft.

Jalayn
fonte
1
No VC ++ Express, você pode escrever a GUI com: 1. API Win32, que é muito antiga, complicada e ridícula; 2. MFC, que é um monte de porcaria; 3. WTL, que é melhor, mas não é multiplataforma. 4. C ++ / CLI, que é impopular, mal suportado (mesmo sem inteligência) e muito complicado. O Qt é mais fácil, multiplataforma, possui um bom designer de GUI e possui uma grande quantidade de classes úteis que não são da GUI, o que é muito importante no C ++ com sua pequena biblioteca padrão.
Anton Barkovsky
0

Talvez seja mais adequado ao StackOverflow, com a tag c ++; mas mesmo assim.

Veja alguns deles no google; Qt, WxWidgets, WinApi do TheForgers, Fltk ...

As GUIs não são tão difíceis de usar, especialmente quando você já conhece o c ++. Vá com WxWidgets eu acho; O Qt é um pouco complexo demais para o aprendizado de um mês. Você pode pegar o Wx em algumas horas.

Seb Holzapfel
fonte
-1

Os usuários não gostam de coisas complicadas. O console é uma coisa complicada, é por isso que você precisa criar aplicativos GUI mais amigáveis ​​e fáceis de entender. Esta é a razão mais óbvia que eu vejo. Você pode olhar para gtk ou Qt - esses dois são os mais populares.

Sergey
fonte
2
A CLI não é complicada e as GUIs, por definição, são MAIS complicadas para o usuário. Eles são mais acessíveis, não menos complicados.
ominus