Guia de Programação em C/GTK 2 - Construindo uma Calculadora Completa

Neste guia, você aprenderá os princípios básicos de GTK, como posicionar os elementos na interface e entender a teoria de sinais. Ao longo do guia, iremos construir uma calculadora completa em C/GTK 2 com botões numéricos, entrada para texto, cálculos com valores flutuantes e negativos, múltiplos operadores e muito mais.

[ Hits: 11.403 ]

Por: Mateus Moutinho em 17/03/2020


Construindo a Interface - Parte 3: Redigindo o código da interface



NOTA: o código desta página será iniciado a partir do arquivo da página anterior, arquivo "calculadora1.c". Caso não esteja com ele, baixe-o e renomeie para "calculadora.c".

Compile com o seguinte comando:

gcc calculadora.c -o calculadora.out `pkg-config --cflags --libs gtk+-2.0`

Execute com:

./calculadora.out

Declarando os Widgets

Partindo da premissa, que absolutamente tudo em GTK são widgets, devemos declarar todos os elementos que irão compor nossa interface, sendo eles todos os botões, a janela, a entrada e a tabela. Então, após o widget janela (declarada na primeira aula ) vá declarando os widgets e separando eles por vírgula (não se esqueça de adicionar o ponto e vírgula no último widget para finalizar a instrução).
Linux: Guia de Programação em C / GTK 2 (Construindo uma Calculadora Completa)

Inicializando a Entrada

Logo após a inicialização da janela, declare a entrada através da função:

entrada  = gtk_entry_new();

Ficando assim:
Linux: Guia de Programação em C/GTK 2 - Construindo uma Calculadora Completa

Inicializando os botões

Para inicializar botões com textos, usamos a função:

botao_de_teste  = gtk_button_new_with_label  ("texto de teste ");

Dessa forma, inicialize todos os botões com seus respectivos textos, ficando assim:
Linux: Guia de Programação em C / GTK 2 (Construindo uma Calculadora Completa)

Inicializando a Tabela

Como vimos na página anterior, inicializamos nossa tabela de 7 linhas e 5 colunas através da função:

tabela   = gtk_table_new  (6,4,TRUE);

Linux: Guia de Programação em C / GTK 2 (Construindo uma Calculadora Completa)

Definindo Tamanho e título da Interface

Para definir um título para a interface, é bem simples, basta digitar a seguinte função:

gtk_window_set_title      (GTK_WINDOW(janela),"Calculadora  GTK");

Para definir o tamanho da interface, use a função abaixo:

gtk_window_set_default_size(GTK_WINDOW(janela), 220, 300);

Sendo 220 a largura e 300 a altura. Ficando assim:
Linux: Guia de Programação em C / GTK 2 (Construindo uma Calculadora Completa)

Empacotando os Widgets na Tabela

Como vimos na aula anterior, o empacotamento via Tabela em GTK pode ser feito através da seguinte função

gtk_table_attach_defaults    (GTK_TABLE(tabela),botao_de_teste,    0,0,0,0);

Ficando assim:
Linux: Guia de Programação em C / GTK 2 (Construindo uma Calculadora Completa)

Adicionando espaçamento Entre os Widgets

Para adicionar espaçamento entre os elementos da tabela, use as seguintes funções:

A. Para adicionar espaçamentos entre as linhas:

gtk_table_set_row_spacings (GTK_TABLE(tabela),3);

B. Para adicionar espaçamento entre as colunas:

gtk_table_set_col_spacings (GTK_TABLE(tabela),3);

Ficando assim:
Linux: Guia de Programação em C / GTK 2 (Construindo uma Calculadora Completa)

Empacotando a Tabela Dentro da Janela

Através do sistema de Containers, podemos empacotar widgets dentro de widgets, como no caso em que iremos empacotar toda nossa tabela dentro da janela, com a seguinte função:

gtk_container_add(GTK_CONTAINER(janela),tabela);

Ficando assim:
Linux: Guia de Programação em C / GTK 2 (Construindo uma Calculadora Completa)
Copile e execute o código e, se tudo der certo, terá esse resultado:
Linux: Guia de Programação em C / GTK 2 (Construindo uma Calculadora Completa)
NOTA: o código feito nesta aula esta anexado como calculadora2.c. Baixe e renomeie para "calculadora.c"

Compile com o seguinte comando:

gcc calculadora.c -o calculadora.out `pkg-config --cflags --libs gtk+-2.0`

Execute com:

./calculadora.out

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Construindo a Interface - Parte 1: Criando a Janela
   3. Construindo a Interface - Parte 2: Entendendo a estrutura de tabelas
   4. Construindo a Interface - Parte 3: Redigindo o código da interface
   5. Entendendo a Teoria de Sinais GTK
   6. Entendendo o Funcionamento do Programa
   7. Conectando os Botões
   8. Construindo as Funções - Finalizando o Programa
Outros artigos deste autor

DoTheWorld - Biblioteca completa para manipulação de Arquivos e Pastas em C

Leitura recomendada

Linguagem C - Listas Duplamente Encadeadas

Linguagem C - Árvores Binárias

Otimização de algoritmos

Dicas para aprender programação

Tutorial SDL

  
Comentários
[1] Comentário enviado por fabio em 17/03/2020 - 00:10h

Ótimo trabalho, parabéns!

[2] Comentário enviado por mateusmoutinho em 17/03/2020 - 01:29h

opa muito obrigado amigo , logo menos publicarei vários conteúdos sobre programação em C e C++

[3] Comentário enviado por hiperjohn em 28/03/2020 - 19:49h

Mateus, gostei muito do tutorial. Parabéns!

Gostaria de sugerir, caso fosse possível, que vc faça um tutorial sobre como utilizar o Glade para criar a interface gráfica.

Obrigado por compartilhar seu conhecimento!

[4] Comentário enviado por mateusmoutinho em 29/03/2020 - 22:00h


[3] Comentário enviado por hiperjohn em 28/03/2020 - 19:49h

Mateus, gostei muito do tutorial. Parabéns!

Gostaria de sugerir, caso fosse possível, que vc faça um tutorial sobre como utilizar o Glade para criar a interface gráfica.

Obrigado por compartilhar seu conhecimento!


Opa amigo , futuramente posso fazer sim , mas se me permite vou dar te dar uma sugestão, o glade é um ótimo facilitador , porém com ele dificilmente você entenderá a essencia de como funciona a lógica por trás do gtk , então recomendo que para começar estude GTK puro, mas sim irei fazer tutoriais usando o glade sim

[5] Comentário enviado por matheusxreis em 23/09/2021 - 00:50h

Ufa! É extremamente difícil de encontrar bom conteúdo sobre na net. Muito feliz de ter encontrado esse guia aqui.

MUITO obrigado!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts