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

gtk em c/c++ - 8º parte

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

1gtk em c/c++ - 8º parte Empty gtk em c/c++ - 8º parte Qui Jun 13, 2013 1:36 pm

Moedas Moedas : 201
Mensagens Mensagens : 92
Humor Humor : *-*
Reputação Reputação : 5
Quebra de regras:
gtk em c/c++ - 8º parte Left_bar_bleue0 / 1000 / 100gtk em c/c++ - 8º parte Right_bar_bleue

hacker fts315

hacker fts315

Moderador Informática

Moderador Informática

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();
}


[Tens de ter uma conta e sessão iniciada para poderes visualizar 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();
}


[Tens de ter uma conta e sessão iniciada para poderes visualizar 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();
}


[Tens de ter uma conta e sessão iniciada para poderes visualizar 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();
}


[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

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

by hacker fts315

https://www.facebook.com/hacker.fts315

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

Permissões neste sub-fórum
Não podes responder a tópicos