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.657 ]

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


Agora sim



Vamos editar de novo o arquivo teste.c e acrescentar mais algumas linhas:

#include <stdio.h>
#include <gtk/gtk.h>

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

  gtk_init(&argc, &argv);

  janela=gtk_window_new(GTK_WINDOW_TOPLEVEL);

  gtk_widget_show_all(janela);

  gtk_main();

  return 0;
}

Ah.... faltava exibir a janela, bem intuitivo, não?

gtk_widget_show_all(janela);

Mas pra que serve o gtk_main(); ?

Essa linha é que inicia o main loop, que é um loop de eventos. É ele que fica esperando alguma interação com a interface gráfica e vai executando o que é solicitado.

Recompile o programa e execute-o novamente.

Legal, agora abre uma janela, mas também não acontece muita coisa. Vamos fechar o programa.... ops a janela fecha, mas meu console continua preso em algo....nada que um Ctrl+C não resolva...

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

O ? Alternativo em C/C++

Introdução à linguagem C - Parte I

Introdução à linguagem C - Parte IV

Funcionamento da memória

Criando uma calculadora com o KDevelop

  
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