Introdução a GTK+ em C

Uma breve introdução de como começar a desenvolver interfaces gráficas em C utilizando a biblioteca GTK+.

[ Hits: 84.746 ]

Por: Fábio Hideki Endo em 09/07/2010


Introdução



Desenvolver interfaces gráficas é, para a maioria dos programadores (como eu, por exemplo), um martírio. Para mim, começa do fato que debugar uma interface gráfica é infinitamente mais trabalhoso que debugar um aplicativo em console, mas o principal problema a meu ver é que eu não tenho a menor noção de estética (ou pelo menos a minha noção costuma ser bem diferente da noção dos usuários finais).

De qualquer forma, quando o público alvo de um aplicativo não tem a menor ideia do que é uma console, é fundamental termos uma interface gráfica que torne simples para qualquer pessoa o uso das funções desse aplicativo.

Como não há muito como fugir das interfaces gráficas, é preciso escolher uma forma de desenvolver essas interfaces. Temos diversas bibliotecas gráficas, mas vamos tratar especificamente da biblioteca GTK+ por algumas características:
  • Licença LGPL, o que dá uma grande flexibilidade na licença do aplicativo a ser desenvolvido;
  • Bem documentada, o que é fundamental para o desenvolvedor, afinal ninguém quer perder tempo tentando adivinhar pra que serve cada função da biblioteca;
  • Com a GTK+ você consegue migrar (pelo menos a interface gráfica) para muitos sistemas, até para o Windows e dispositivos com framebuffer.

Neste artigo farei uma breve introdução de como começar a desenvolver interfaces gráficas utilizando a biblioteca GTK+ e a linguagem C.

Requisitos

Primeiro de tudo, precisamos da biblioteca e de um ambiente de desenvolvimento.

Nesse ponto você pode escolher baixar o código fonte, compilar e instalar a biblioteca... alguns anos atrás (quando eu ainda era fanático pelo Slackware) é o que eu faria, mas hoje o que eu faço é um apt-get (será que estou ficando preguiçoso?).

No Debian é o seguinte:

# apt-get install build-essential

para instalar gcc, bibliotecas padrões e essas coisas.

# apt-get install libgtk2.0-dev

para instalar a biblioteca gtk+, aceite todas as dependências.

Para quem quiser fazer a partir do código fonte, é fazer o famoso:

# ./configure
# make
# make install


Pra ver se está tudo certo (ou quase certo):

# pkg-config --cflags --libs gtk+-2.0

Deve retornar algo parecido com:

-D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/pixman-1 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0

Esse artigo não é uma introdução a C, vou partir do princípio que pelo menos o básico da linguagem de programação é conhecido pelo leitor.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Primeiro programa... que não faz nada
   3. Agora sim
   4. Sinais
   5. Mais um exemplo
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Mais sobre recursividade em C/C++

Bibliotecas estáticas c/c++

Criando uma calculadora com o Glade

Funcionamento da memória

Introdução à ponteiros em C

  
Comentários
[1] Comentário enviado por eltondhiego em 09/07/2010 - 16:18h

Parabéns pelo artigo!! você poderia inclusive dar continuidade, ensinando novos passos ...

A propósito, me explica essa linha: atol(gtk_entry_get_text(GTK_ENTRY(entrada)));
Se eu estiver certo, a função atol transforma o valor contido em "entrada" para double ... e se fosse para um inteiro ou booleano como ficaria?

[2] Comentário enviado por fhendo em 09/07/2010 - 23:15h

Obrigado pelo comentário elton

O atol faz exatamente isso que você comentou. Ele converte para um double uma sequência de caracteres, que no caso dessa linha é a sequência de caracteres retornada pelo gtk_entry_get_text().
Se eu quisesse converter para um int eu usaria atoi(), no caso de ansi C eu não tenho o tipo bool, normalmente eu retornaria 0 ou 1 dentro de um small int. Espero ter ajudado um pouco

Vou tentar escrever mais alguns artigos

[3] Comentário enviado por leandrox em 10/07/2010 - 22:33h

Bom , Ótimo artigo!
Será minha introdução a essa biblioteca tão bem falada...
Valeu!

[4] Comentário enviado por vinipsmaker em 10/07/2010 - 22:55h

finalmente tive tempo de ler o artigo
e gostei dele, ele vai direto ao ponto (a interface gráfica)
eu tinha tentado aprender pelo manual oficial, mas ele exige que você aprenda uma linguagem de programação quase tão exotérica quanto whitespace ( http://en.wikipedia.org/wiki/Whitespace_%28programming_language%29 ), o GObject (como dizem alguns, "se c fosse apropriada para orientação a objetos, ninguém teria criado c++").

parabéns e obrigado pela contribuição

[5] Comentário enviado por gtuxed em 12/07/2010 - 23:28h

GTK com C no início parece meio "seco" demais, eu recomendaria começar com uma linguagem interpretada (tipo lua, python, perl, etc.).Caso você queira algo com mais desempenho ai sim, vamos para o C.

A minha maior dificuldade com GTK na época em que comecei a aprender foi quando tive que criar uma lista, tem umas implementações de estruturas de dados que acostumar a usar, no inicio achei meio estranho pois em shell script fazia meus aplicativos com lista em 2 segundos.No fim acabei deixando um pouco de lado interface gráfica, somente faço quando realmente é necessário, até porque geralmente o que faço é muito simples.

Para aqueles que já entenderam a lógica e querem alguma ferramenta que ajude na montagem da interface, vale a pena dar uma olhada no http://glade.gnome.org.

[6] Comentário enviado por gui.thcarlos em 17/01/2012 - 20:59h

Não sei se foi só comigo, mas no primeiro exemplo do teste.c tenho um erro de não achar o GtkWidget, vendo o segundo exemplo percebi que a linha #include <gtk/gtk.h> substitui a linha #include <stdio.h> do primeiro exemplo. Creio que o primeiro exemplo esteja com esse pequeno problema :D

[7] Comentário enviado por removido em 11/08/2014 - 12:07h

Ótimo artigo, eu uso a Ide Anjuta para desenvolvimento em gtk3.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts