Bem vindo ao LifeGames Demo
Cadastre-se agora para ter acesso a todos os nossos recursos. Uma vez cadastrado e logado, você será capaz de criar tópicos, postar respostas a tópicos já existentes, a reputação de seus companheiros, começar seu próprio mensageiro privado, atualizações de status post, gerir o seu perfil e muito mais. Esta mensagem será removida assim que tiver logado.
Entrar Cadastre-se


Você não está conectado. Conecte-se ou registre-se

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 gtk em c/c++ - 12º parte em Dom Jun 23, 2013 3:51 pm

Moedas Moedas : 201
Mensagens Mensagens : 92
Humor Humor : *-*
Reputação Reputação : 5
Quebra de regras:
0 / 1000 / 100

avatar

hacker fts315

Moderador Informática

Moderador Informática

bom galera 12º parte do tuto, vamos criar uma janela basica

Código:
#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);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}

no tutorial anterior aprendemos a manipular a cor do widgets mais de uma maneira estatica ou seja o programa vai ter sempre aquele cor, se agente quiser q o proprio usuario mude a cor bastava criar um entry onde o usuario selecionava a cor desejada, mais manipular a cor por codigo ainda e chato podemos criar uma botao q mostra a cor e seus codigos, para criar esse botao usamos a funçao gtk_color_button_new tambem temos q atribuir ele a um ponteiro do tipo GtkWidget

Código:
#include <stdio.h>
#include <gtk/gtk.h>

int main(int argc, char **argv)
{
   GtkWidget *janela, *botao;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   botao = gtk_color_button_new();
   gtk_container_add(GTK_CONTAINER(janela),botao);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}

[Você precisa estar registrado e conectado para ver esta imagem.]

para agente atribuir a cor para variavel GdkColor usamos a funçao gtk_color_button_get_color e passamos como argumento o botao depois o endereço de memoria da variavel GdkColor

Código:
#include <stdio.h>
#include <gtk/gtk.h>

int main(int argc, char **argv)
{
   GtkWidget *janela, *botao;
   GdkColor cor;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   botao = gtk_color_button_new();
   gtk_color_button_get_color(GTK_COLOR_BUTTON(botao),&cor);
   gtk_container_add(GTK_CONTAINER(janela),botao);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}

um exemplo mais completo

Código:
#include <stdio.h>
#include <gtk/gtk.h>

GtkWidget *botao;
GdkColor cor;

void fts_cor(void)
{
   gtk_color_button_get_color(GTK_COLOR_BUTTON(botao),&cor);
   g_print("vermelho 0x%x\n",cor.red);
   g_print("verde 0x%x\n",cor.green);
   g_print("azul 0x%x\n",cor.blue);
}

int main(int argc, char **argv)
{
   GtkWidget *janela, *fixo, *botao2;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   fixo = gtk_fixed_new();
   botao = gtk_color_button_new();
   botao2 = gtk_button_new_with_label("ver cor");
   gtk_container_add(GTK_CONTAINER(janela),fixo);
   gtk_fixed_put(GTK_FIXED(fixo),botao,0,0);
   gtk_fixed_put(GTK_FIXED(fixo),botao2,60,0);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   g_signal_connect(GTK_OBJECT(botao2),"clicked",G_CALLBACK(fts_cor),NULL);
   gtk_main();
}

[Você precisa estar registrado e conectado para ver esta imagem.]

tambem existe um widget de calendario, para criar ele usamos gtk_calendar_new, para criar ele basta atribuir a um ponteiro GtkWidget depois colocar ele na janela

Código:
#include <stdio.h>
#include <gtk/gtk.h>

int main(int argc, char **argv)
{
   GtkWidget *janela, *cal, *fixo;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   fixo = gtk_fixed_new();
   cal = gtk_calendar_new();
   gtk_container_add(GTK_CONTAINER(janela),fixo);
   gtk_fixed_put(GTK_FIXED(fixo),cal,0,0);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}

[Você precisa estar registrado e conectado para ver esta imagem.]

para agente pegar a data que ta no calendario usamos a funçao gtk_calendar_get_date passamos como argumento o calendario, depois 3 endereço de memoria de variaveis gint q sera armazenada (ano, mes, dia)

Código:
#include <stdio.h>
#include <gtk/gtk.h>

int main(int argc, char **argv)
{
   GtkWidget *janela, *cal, *fixo;
   gint ano, mes, dia;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   fixo = gtk_fixed_new();
   cal = gtk_calendar_new();
   gtk_calendar_get_date(GTK_CALENDAR(cal),&ano,&mes,&dia);
   gtk_container_add(GTK_CONTAINER(janela),fixo);
   gtk_fixed_put(GTK_FIXED(fixo),cal,0,0);
   g_print("%d - %d - %d",dia,mes,ano);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}

para agente mudar o dia usamos a funçao gtk_calendar_select_day passamos como argumento o calendario e o dia

Código:
#include <stdio.h>
#include <gtk/gtk.h>

int main(int argc, char **argv)
{
   GtkWidget *janela, *cal, *fixo;
   gint ano, mes, dia;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   fixo = gtk_fixed_new();
   cal = gtk_calendar_new();
   gtk_calendar_select_day(GTK_CALENDAR(cal),1);
   gtk_container_add(GTK_CONTAINER(janela),fixo);
   gtk_fixed_put(GTK_FIXED(fixo),cal,0,0);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}

para mudar o mes e o ano usamos a funçao gtk_calendar_select_month passamos como argumento o calendario depois o mes e o ano (so lembrando q o mes começa na ordem 0)

Código:
#include <stdio.h>
#include <gtk/gtk.h>

int main(int argc, char **argv)
{
   GtkWidget *janela, *cal, *fixo;
   gint ano, mes, dia;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   fixo = gtk_fixed_new();
   cal = gtk_calendar_new();
   gtk_calendar_select_day(GTK_CALENDAR(cal),1);
   gtk_calendar_select_month(GTK_CALENDAR(cal),0,2100);
   gtk_container_add(GTK_CONTAINER(janela),fixo);
   gtk_fixed_put(GTK_FIXED(fixo),cal,0,0);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}

bom galera e isso ate o proximo

by hacker fts315



[center][Você precisa estar registrado e conectado para ver esta imagem.]


Contato:
Facebook: [Você precisa estar registrado e conectado para ver este link.]
Ask: [Você precisa estar registrado e conectado para ver este link.]
Ver perfil do usuário http://www.facebook.com/hacker.fts315

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum