gtk em c/c++ - 4º parte
2 participantes
Página 1 de 1
gtk em c/c++ - 4º parte
bom galera essa e a 4º parte do tutorial de gtk em c/c++, para começar o tuto fazemos uma janela simples
no tutorial anterior eu falei sobre o label nesse eu vou falar sobre os button eventos e ensinar como posicionar os objetos dentro de um fixed, para começar vamos criar um botao com a funçao gtk_button_new_with_label passamos como argumento uma string, tambem atribuimos ele a ponteiro do tipo GtkWidget
agora agente coloca o botao na janela e depois chama ele com as funçoes gtk_container_add e gtk_widget_show q foi ensinado no tutorial anterior com label
o botao ta pronto agora vamos criar um evento com ele com a funçao g_signal_connect, passamos como argumento o obejto q agente quer manipular q no caso e o botao, o evento q no caso vamos usar "clicked" , o callback q no caso vamos usar a funçao gtk_main_quit q seria finalizar o programa, e o NULL
quando agente aperta no botao o programa e finalizado graças a funçao gtk_main_quit, agente poderia criar uma funçao tambem e passar ela como argumento na funçao g_signal_connect veja
dependendo do tipo de objeto ou evento a alguns tipos de passagem de argumento no caso do clicked usamos esses ponteiros como argumentos GtkWidget e gpointer onde agente coloca NULL seria a passagem de argumento para gpointer
tambem poderia usar a funçao g_signal_connect_swapped q inverteria os argumentos
muitas vezes e melhor criar variaveis ou ponteiros globais para poder acessar por todas as funçoes, muitos programadores nao recomenda pelo seguinte motivo a variavel global so e liberada da memoria quando programa e finalizado porem quando mexemos com algo q vai ficar da execuçao a finalizaçao pode ser uma boa ou nao isso depende
tambem na hora de chamar as janelas com a funçao gtk_widget_show, quando existe outros widget dentro do mesmo podemos usar gtk_widget_show_all assim vai chamar todos os widgets
se vc percebeu o objeto botao ocupo todo a janela para agente pode posicionar usamos o objeto fixed, para criar um fixed usamos a funçao gtk_fixed_new e atribuimos ele a um ponteiro GtkWidget, tambem colocamos ele na janela
ao inves da gente usar a funçao gtk_container_add para adicionar o botao no fixed usamos a funçao gtk_fixed_put e passamos como argumento o fixed, o objeto e a posiçao da esquerda para direita e a posiçao de cima para baixo
bom galera ate o proximo ^^
by hacker fts315
- 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(janela);
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
gtk_main();
}
no tutorial anterior eu falei sobre o label nesse eu vou falar sobre os button eventos e ensinar como posicionar os objetos dentro de um fixed, para começar vamos criar um botao com a funçao gtk_button_new_with_label passamos como argumento uma string, tambem atribuimos ele a 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_button_new_with_label("sair");
gtk_widget_show(janela);
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
gtk_main();
}
agora agente coloca o botao na janela e depois chama ele com as funçoes gtk_container_add e gtk_widget_show q foi ensinado no tutorial anterior com label
- 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_button_new_with_label("sair");
gtk_container_add(GTK_CONTAINER(janela),botao);
gtk_widget_show(janela);
gtk_widget_show(botao);
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
gtk_main();
}
o botao ta pronto agora vamos criar um evento com ele com a funçao g_signal_connect, passamos como argumento o obejto q agente quer manipular q no caso e o botao, o evento q no caso vamos usar "clicked" , o callback q no caso vamos usar a funçao gtk_main_quit q seria finalizar o programa, e o NULL
- 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_button_new_with_label("sair");
gtk_container_add(GTK_CONTAINER(janela),botao);
gtk_widget_show(janela);
gtk_widget_show(botao);
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(GTK_OBJECT(botao),"clicked",G_CALLBACK(gtk_main_quit),NULL);
gtk_main();
}
quando agente aperta no botao o programa e finalizado graças a funçao gtk_main_quit, agente poderia criar uma funçao tambem e passar ela como argumento na funçao g_signal_connect veja
- Código:
#include <stdio.h>
#include <gtk/gtk.h>
void fts_sair(void)
{
gtk_main_quit();
}
int main(int argc, char **argv)
{
GtkWidget *janela, *botao;
gtk_init(&argc,&argv);
janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
botao = gtk_button_new_with_label("sair");
gtk_container_add(GTK_CONTAINER(janela),botao);
gtk_widget_show(janela);
gtk_widget_show(botao);
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(GTK_OBJECT(botao),"clicked",G_CALLBACK(fts_sair),NULL);
gtk_main();
}
dependendo do tipo de objeto ou evento a alguns tipos de passagem de argumento no caso do clicked usamos esses ponteiros como argumentos GtkWidget e gpointer onde agente coloca NULL seria a passagem de argumento para gpointer
- Código:
#include <stdio.h>
#include <gtk/gtk.h>
void fts_sair(GtkWidget *objeto, gpointer *passagem)
{
g_print("%s\n",passagem);
}
int main(int argc, char **argv)
{
GtkWidget *janela, *botao;
char fts[] = "hacker fts315";
gtk_init(&argc,&argv);
janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
botao = gtk_button_new_with_label("escrever no terminal");
gtk_container_add(GTK_CONTAINER(janela),botao);
gtk_widget_show(janela);
gtk_widget_show(botao);
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(GTK_OBJECT(botao),"clicked",G_CALLBACK(fts_sair),fts);
gtk_main();
}
tambem poderia usar a funçao g_signal_connect_swapped q inverteria os argumentos
- Código:
#include <stdio.h>
#include <gtk/gtk.h>
void fts_sair(gpointer *passagem, GtkWidget objeto)
{
g_print("%s\n",passagem);
}
int main(int argc, char **argv)
{
GtkWidget *janela, *botao;
char fts[] = "hacker fts315";
gtk_init(&argc,&argv);
janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
botao = gtk_button_new_with_label("escrever no terminal");
gtk_container_add(GTK_CONTAINER(janela),botao);
gtk_widget_show(janela);
gtk_widget_show(botao);
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect_swapped(GTK_OBJECT(botao),"clicked",G_CALLBACK(fts_sair),fts);
gtk_main();
}
muitas vezes e melhor criar variaveis ou ponteiros globais para poder acessar por todas as funçoes, muitos programadores nao recomenda pelo seguinte motivo a variavel global so e liberada da memoria quando programa e finalizado porem quando mexemos com algo q vai ficar da execuçao a finalizaçao pode ser uma boa ou nao isso depende
- Código:
#include <stdio.h>
#include <gtk/gtk.h>
GtkWidget *janela, *botao;
char fts[] = "hacker fts315";
void fts_sair(void)
{
g_print("%s\n",fts);
}
int main(int argc, char **argv)
{
gtk_init(&argc,&argv);
janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
botao = gtk_button_new_with_label("escrever no terminal");
gtk_container_add(GTK_CONTAINER(janela),botao);
gtk_widget_show(janela);
gtk_widget_show(botao);
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(GTK_OBJECT(botao),"clicked",G_CALLBACK(fts_sair),NULL);
gtk_main();
}
tambem na hora de chamar as janelas com a funçao gtk_widget_show, quando existe outros widget dentro do mesmo podemos usar gtk_widget_show_all assim vai chamar todos os widgets
- 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_button_new_with_label("sair");
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();
}
se vc percebeu o objeto botao ocupo todo a janela para agente pode posicionar usamos o objeto fixed, para criar um fixed usamos a funçao gtk_fixed_new e atribuimos ele a um ponteiro GtkWidget, tambem colocamos ele na janela
- Código:
#include <stdio.h>
#include <gtk/gtk.h>
int main(int argc, char **argv)
{
GtkWidget *janela, *fixo, *botao;
gtk_init(&argc,&argv);
janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
fixo = gtk_fixed_new();
botao = gtk_button_new_with_label("fts315");
gtk_container_add(GTK_CONTAINER(janela),fixo);
gtk_widget_show_all(janela);
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
gtk_main();
}
ao inves da gente usar a funçao gtk_container_add para adicionar o botao no fixed usamos a funçao gtk_fixed_put e passamos como argumento o fixed, o objeto e a posiçao da esquerda para direita e a posiçao de cima para baixo
- Código:
#include <stdio.h>
#include <gtk/gtk.h>
int main(int argc, char **argv)
{
GtkWidget *janela, *fixo, *botao;
gtk_init(&argc,&argv);
janela = gtk_window_new(GTK_WINDOW_TOPLEVEL);
fixo = gtk_fixed_new();
botao = gtk_button_new_with_label("fts315");
gtk_container_add(GTK_CONTAINER(janela),fixo);
gtk_fixed_put(GTK_FIXED(fixo),botao,100,100);
gtk_widget_show_all(janela);
g_signal_connect(GTK_OBJECT(janela),"destroy",G_CALLBACK(gtk_main_quit),NULL);
gtk_main();
}
bom galera ate o proximo ^^
by hacker fts315
Flavio315- Moderapixel
- Quebra de regras :
Mensagens : 54
Pontos : 146
Reputação : 0
Data de inscrição : 19/06/2013
Localização : sub-mundo da informatica
Re: gtk em c/c++ - 4º parte
Obrigado Por Com o Fórum
Até
Até
Detoxx- Moderapixel
- Quebra de regras :
Mensagens : 76
Pontos : 86
Reputação : 0
Data de inscrição : 19/06/2013
Idade : 23
Localização : Aracaju
Tópicos semelhantes
» gtk em c/c++ - 12º parte
» gtk em c/c++ - 15º parte
» gtk em c/c++ - 14º parte
» gtk em c/c++ - 1º parte
» gtk em c/c++ - 2º parte
» gtk em c/c++ - 15º parte
» gtk em c/c++ - 14º parte
» gtk em c/c++ - 1º parte
» gtk em c/c++ - 2º parte
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|