Chinaunix首页 | 论坛 | 博客
  • 博客访问: 450683
  • 博文数量: 64
  • 博客积分: 3271
  • 博客等级: 中校
  • 技术积分: 727
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-30 18:42
文章分类

全部博文(64)

文章存档

2013年(1)

2011年(19)

2010年(42)

2009年(2)

分类: LINUX

2010-05-27 14:39:40



#include <gtk/gtk.h>

int main( int argc,
          char *argv[] )
{
    GtkWidget *window;
    
    gtk_init (&argc, &argv);
    
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_show (window);
    
    gtk_main ();
    
    return 0;
}

每个gtk程序都与之类似。
一个程序就必须创建一个window,然后显示它,再进入gtk_main()主循环。

gtk里面的分配函数有共同的特点,如
GtkWindow :gtk_window_new();
GtkButton : gtk_button_new();

如果要在分配时加以初始化,比如对一个GtkLabel:
仅仅分配则调用 :gtk_label_new();
若要加以初始化 :gtk_label_new_with_mnemonic();
GtkButton :gtk_button_new_with_mnemonic();

所以控件的创建遵循

GtkWidget xxxx = gtk_xxxx_new();


然后就是信号:
 代码:

g_signal_connect(G_OBJECT(window), "destroy",
        G_CALLBACK(gtk_main_quit), NULL);

以上就是把window 对象的 destroy 信号与回调函数 gtk_main_quit 相关联, NULL表示不传递参数。
对于一个窗口,当点击它上面的x时,就会产生一个”destroy“信号,然后就会调用回调函数gtk_main_quit来退出程序。

G_OBJECT用于将window强制转换成GObject对象指针,也就是传说中的基类指针。
当然,不同的对象,有不同的信号类型。

如此调用之后,信号就就有了对应的动作。

阅读(1364) | 评论(0) | 转发(0) |
0

上一篇:pthread pool 线程池

下一篇:gtk快速上手

给主人留下些什么吧!~~