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

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

1 gtk em c/c++ - 9º parte em Dom Jun 16, 2013 1:53 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 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();
}

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

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

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

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

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

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

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

bom galera 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