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++ - 8º parte

em Ter Jul 02, 2013 5:56 pm
bom galera 8º parte do tutorial de gtk em c/c++, nesse vamos aprender a usar mais alguns widgets, para começar criamos 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();
}


existe outros tipos de botoes um deles e o gtk_toggle_button_new_with_label, esse quando voce clica uma vez ele fica clicado ate vc clica denovo, para usar ele basta passar como argumento uma string e depois atribuir ele a um ponteiro do tipo GtkWidget, esse botao e usado mais para checagem para alguma coisa

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_toggle_button_new_with_label("by hacker fts315");
   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 saber se o botao esta clickado ou nao usamos a funçao gtk_toggle_button_get_active passamos como argumento o botao, ela vai retornar verdadeiro ou falso, no meu exemplo abaixo vou criar outro botao normal e fazer a checagem caso ele esteja ativo ele finaliza o programa se nao ele nao finaliza

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

GtkWidget *botao;

void fts_botao(void)
{
   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(botao)))
   {
      gtk_main_quit();
   }
}

int main(int argc, char **argv)
{
   GtkWidget *janela, *hbox, *botao2;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   botao = gtk_toggle_button_new_with_label("checagem sair");
   botao2 = gtk_button_new_with_label("executar");
   hbox = gtk_hbox_new (FALSE,0);
   gtk_container_add(GTK_CONTAINER(janela),hbox);
   gtk_box_pack_start(GTK_BOX(hbox),botao,TRUE,TRUE,0);
   gtk_box_pack_start(GTK_BOX(hbox),botao2,TRUE,TRUE,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_botao),NULL);
   gtk_main();
}


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

tambem existe outros widgets como vsepartor e hseparator q cria uma linha para separar widgets, para usar eles basta usar a funçao gtk_vseparator_new ou gtk_hseparator_new e atribuir a um ponteiro do tipo GtkWidget e depois colocar na onde vc deseja separar

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

GtkWidget *botao;

void fts_botao(void)
{
   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(botao)))
   {
      gtk_main_quit();
   }
}

int main(int argc, char **argv)
{
   GtkWidget *janela, *hbox, *botao2, *separador;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   botao = gtk_toggle_button_new_with_label("checagem sair");
   botao2 = gtk_button_new_with_label("executar");
   hbox = gtk_hbox_new (FALSE,0);
   separador = gtk_vseparator_new();
   gtk_container_add(GTK_CONTAINER(janela),hbox);
   gtk_box_pack_start(GTK_BOX(hbox),botao,TRUE,TRUE,0);
   gtk_box_pack_start(GTK_BOX(hbox),separador,TRUE,TRUE,0);
   gtk_box_pack_start(GTK_BOX(hbox),botao2,TRUE,TRUE,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_botao),NULL);
   gtk_main();
}


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

outro bom separador sao os frames q cria uma separador em volta do widget ainda com um titulo, para criar um frame usamos a funçao gtk_frame_new e passamos como argumento uma string, tambem atribuimos a um ponteiro do tipo GtkWidget adicionamos o frame onde a gente quiser e adicionamos os widget dentro do frame com a funçao gtk_container_add

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

int main(int argc, char **argv)
{
   GtkWidget *janela, *frame, *label;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   frame = gtk_frame_new("titulo");
   label = gtk_label_new("by hacker fts315");
   gtk_container_add(GTK_CONTAINER(janela),frame);
   gtk_container_add(GTK_CONTAINER(frame),label);
   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.]

bom galera aq termina a 8º parte do tutorial, logo logo vou fazer a 9º ^^

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