gtk em c/c++ - 9º parte

Ir em baixo

gtk em c/c++ - 9º parte

Mensagem por Flavio315 em Sex Jun 21, 2013 12:43 pm

bom galera essa e a 9º parte do tutorial, para começar ela fazemos uma janela simples u.u

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 tuto anterior vimos o botao toggle q fica apertado ate apertar ele denovo, porem o uso do botao toggle e mais para aqueles botao q usa o proprio estado em uma condiçao sem precisar criar variaveis para armazenar essa determinado estado (um bom exemplo e um botao para acender e apagar a luz se ele tiver ativo ela vai apagar quando clicar e se ele nao tiver ele vai acender quando clicar), mais se uso do toggle for apenas para checar se esta ou nao ativo podemos usar o botao check, para usar o check usamos a funçao gtk_check_button_new_with_label passamos como argumento uma string e atribuimos essa funçao a um ponteiro do tipo GtkWidget, tambem adicionamos ele a janela


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

int main(int argc, char **argv)
{
   GtkWidget *janela, *check;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   check = gtk_check_button_new_with_label("voce e maior de idade?");
   gtk_container_add(GTK_CONTAINER(janela),check);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}



a desvantagem entre o toggle e o check, q no check teriamos q criar um outro botao para executar ou um evento, para agente saber se esta ativo ou nao basta usar a mesma funçao q usamos no toggle q seria o gtk_toogle_button_get_active

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

GtkWidget *check;

void fts_check(void)
{
   GtkWidget *janela2, *label;
   janela2 = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)))
   {
      label = gtk_label_new("voce e maior de idade");
   }
   else
   {
      label = gtk_label_new("voce e menor de idade");
   }
   gtk_container_add(GTK_CONTAINER(janela2),label);
   gtk_widget_show_all(janela2);
}

int main(int argc, char **argv)
{
   GtkWidget *janela, *fixo, *botao;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   check = gtk_check_button_new_with_label("voce e maior de idade?");
   botao = gtk_button_new_with_label("executar");
   fixo = gtk_fixed_new();
   gtk_container_add(GTK_CONTAINER(janela),fixo);
   gtk_fixed_put(GTK_FIXED(fixo),check,0,0);
   gtk_fixed_put(GTK_FIXED(fixo),botao,60,30);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   g_signal_connect(GTK_OBJECT(botao),"clicked",G_CALLBACK(fts_check),NULL);
   gtk_main();
}



existe tambem os radio button q sao parecido com os check button a diferença q eles sao um todo os botoes sao interligado e se alternam entre si, para agente criar um radio button e mais complicado q check button pelo motivo da gente ter q interligar eles com uma GSList para começar vamos criar os ponteiros para os widgets no caso vou criar dois radio e a GSList (tambem vou criar um fixo para poder manipular os widgets)

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

int main(int argc, char **argv)
{
   GtkWidget *janela, *radio1, *radio2, *fixo;
   GSList *lista;
   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();
}

agora vamos criar o radio button com a funçao gtk_radio_button_new_with_label passamos como argumento para o primeiro radio button NULL depois uma string

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

int main(int argc, char **argv)
{
   GtkWidget *janela, *radio1, *radio2, *fixo;
   GSList *lista;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   radio1 = gtk_radio_button_new_with_label(NULL,"sim");
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}

agora agente adiciona o radio button no GSList com a funçao gtk_radio_button_group, passamos como argumento o radio button e atribuimos ao GSList

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

int main(int argc, char **argv)
{
   GtkWidget *janela, *radio1, *radio2, *fixo;
   GSList *lista;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   radio1 = gtk_radio_button_new_with_label(NULL,"sim");
   lista = gtk_radio_button_group(GTK_RADIO_BUTTON(radio1));
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}

nos outros radio button onde agente coloco NULL agente coloca a GSList, tambem temos q adicionar os demais radio button na lista

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

int main(int argc, char **argv)
{
   GtkWidget *janela, *radio1, *radio2, *fixo;
   GSList *lista;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   radio1 = gtk_radio_button_new_with_label(NULL,"sim");
   lista = gtk_radio_button_group(GTK_RADIO_BUTTON(radio1));
   radio2 = gtk_radio_button_new_with_label(lista,"nao");
   lista = gtk_radio_button_group(GTK_RADIO_BUTTON(radio2));
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}

veja um exemplo mais completo

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

int main(int argc, char **argv)
{
   GtkWidget *janela, *radio1, *radio2, *fixo;
   GSList *lista;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   radio1 = gtk_radio_button_new_with_label(NULL,"sim");
   lista = gtk_radio_button_group(GTK_RADIO_BUTTON(radio1));
   radio2 = gtk_radio_button_new_with_label(lista,"nao");
   lista = gtk_radio_button_group(GTK_RADIO_BUTTON(radio2));
   fixo = gtk_fixed_new();
   gtk_container_add(GTK_CONTAINER(janela),fixo);
   gtk_fixed_put(GTK_FIXED(fixo),radio1,0,0);
   gtk_fixed_put(GTK_FIXED(fixo),radio2,60,0);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   gtk_main();
}



para agente saber se o radio button ta selecionado usamos a funçao gtk_toggle_button_get_active

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

GtkWidget *radio1, *radio2;

void fts_radio(void)
{
   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio1)))
   {
      gtk_main_quit();
   }
   if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio2)))
   {
   }
}

int main(int argc, char **argv)
{
   GtkWidget *janela, *fixo, *botao;
   GSList *lista;
   gtk_init(&argc,&argv);
   janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   radio1 = gtk_radio_button_new_with_label(NULL,"sim");
   lista = gtk_radio_button_group(GTK_RADIO_BUTTON(radio1));
   radio2 = gtk_radio_button_new_with_label(lista,"nao");
   lista = gtk_radio_button_group(GTK_RADIO_BUTTON(radio2));
   fixo = gtk_fixed_new();
   botao = gtk_button_new_with_label("sair");
   gtk_container_add(GTK_CONTAINER(janela),fixo);
   gtk_fixed_put(GTK_FIXED(fixo),radio1,0,0);
   gtk_fixed_put(GTK_FIXED(fixo),radio2,60,0);
   gtk_fixed_put(GTK_FIXED(fixo),botao,40,30);
   gtk_widget_show_all(janela);
   g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
   g_signal_connect(GTK_OBJECT(botao),"clicked",G_CALLBACK(fts_radio),NULL);
   gtk_main();
}



bom galera ate o proximo ^^

by hacker fts315






Olá Caro usuario, olhe essas Dicas Importantes:
Respeite as [Você precisa estar registrado e conectado para ver este link.].
- [Você precisa estar registrado e conectado para ver este link.].
Fique atento a o [Você precisa estar registrado e conectado para ver este link.].
Veja os [Você precisa estar registrado e conectado para ver este link.] do fórum.
Não peça suporte por MP ou no Chat-Box.
avatar
Flavio315
Moderapixel

Quebra de regras Quebra de regras :
0 / 1000 / 100

Masculino Mensagens Mensagens : 54
Pontos Pontos : 146
Reputação Reputação : 0
Data de inscrição Data de inscrição : 19/06/2013
Localização : sub-mundo da informatica

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

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