#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对象指针,也就是传说中的基类指针。
当然,不同的对象,有不同的信号类型。
如此调用之后,信号就就有了对应的动作。
阅读(1403) | 评论(0) | 转发(0) |