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: 2.266 ]

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
Nenhum artigo encontrado.
Leitura recomendada

Algoritmo... como fazer?

Linguagem C - Listas Duplamente Encadeadas

Análise dos Métodos de Ordenação usados em Algoritmos Computacionais

Otimização de algoritmos

Linguagem C - Árvores Binárias

  
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


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts