Power Duckets
Olá,Caro Visitante!
quer ter a permissão de ver Link's Fazer Tutoriais
e Saber mas sobre o fórum? Registre-se Já O melhor conteúdo encontra-se aqui

Já é um Membro?
Logue-se e faça parte do nosso Mundo de Lazer.

Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Membro
Membro
Localização Localização : sub-mundo da informatica
Ver perfil do usuário

[tutorial] gtk em c/c++ - 12º parte

em Qua Jul 03, 2013 8:00 pm
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
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum