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

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


Primeiro programa... que não faz nada



Com nosso ambiente pronto, vamos começar a codificar. Crie o arquivo teste.c e digite o seguinte conteúdo (pode digitar em qualquer editor de texto que salve como texto puro):

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
  GtkWidget *janela;

  gtk_init(&argc, &argv);

  janela=gtk_window_new(GTK_WINDOW_TOPLEVEL);

  return 0;
}

Uma explicação das linhas:

GtkWidget *janela;

Em gtk todos os componentes (janelas, botões, labels) são filhos de uma classe GtkWidget, por isso declaramos ponteiros do tipo GtkWidget.

gtk_init(&argc, &argv);

Antes de qualquer chamada para funções gtk precisamos inicializar a biblioteca, se você esquecer essa linha, vai receber um monte de erros e seu aplicativo não irá funcionar, apesar de compilar normalmente.

janela=gtk_window_new(GTK_WINDOW_TOPLEVEL);

Quase todo aplicativo tem uma janela, e aqui declaramos que o ponteiro *janela declarado com o tipo GtkWidget é do tipo window. É isso que faremos com todos os widgets que formos utilizar.

Vamos compilar:

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

E vamos rodar:

./teste

E não acontece nada... na próxima página vamos acrescentar mais algumas linhas que resolverão esse problema.

Página anterior     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

Introdução à linguagem C - Parte II

Funcionamento da memória

Introdução à linguagem C - Parte I

O ? Alternativo em C/C++

Criando uma aplicação gráfica com o Qt Designer

  
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