gtk编程笔记 1

1、编译程序

    为了编译GTK+程序,我们有一个方便的工具叫做pkg-config. Pkg-config程序返回关于已安装的库的数据信息。简单的输入我们想使用的库,程序将向我们提供必需的依赖库和包含文件。

    gcc -o simple simple.c `pkg-config --libs --cflags gtk+-2.0`

 2、第一个程序

简单的例子:

#include <gtk/gtk.h>

int main(int argc, char *argv[] )

{

    GtkWidget *window;

    gtk_init(&argc, &argv);//初始化GTK+库

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);//创建一个GtkWindow窗口部件。窗口类型为GTK_WINDOW_TOPLEVEL。此类型的窗口有一个标题栏和

//边框

    gtk_widget_show(window);//显示

 

    gtk_main();//进入主循环,程序等待事件发生

   

    return 0;

}

编译

gcc -o simple simple.c `pkg-config --libs --cflags gtk+-2.0`

将窗口放置到桌面中心

#include <gtk/gtk.h>

int main( int argc, char *argv[])

{

    GtkWidget *window;

 

    gtk_init( &agrc, &argv);

 

    window = get_window_new(GTK_WINDOW_TOPLEVEL);

    gtk_window_set_title( GTK_WINDOW(window), "Center");//设置标题名,默认为程序文件名

    gtk_window_set_default_size( GTK_WINDOW(window), 230, 150)://设置大小

    gtk_window_set_position( GTK_WINDOW(window), GTK_WIN_POS_CENTER);//设置到中心

    gtk_widget_show(window);

 

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

    //将销毁信号和函数gtk_main_quit()连接到一起

    gtk_main();

 

    return 0;

}

 

显示程序图标

 

#include <gtk/gtk.h>

 

GdkPixbuf *create_pixbuf(const gchar *filename)

{

    GdkPixbuf *pixbuf;

    GError *error = NULL;

    pixbuf = gdk_pixbuf_new_from_file(filename, &error);

//函数加载一个图像文件到pixbuf,图像类型自动识别。

    if( !pixbuf)

    {

        fprintf(stderr, "%s\n", error->message);

        g_error_free(error);

    }

   

    return pixbuf;

}

 

int main( int argc, char *argv[])

{

    GtkWidget *window;

   

    gtk_init( &argc, &argv);

   

    window = get_window_new(GTK_WINDOW_TOPLEVEL);

    gtk_window_set_title(GTK_WINDOW(window), "icon");

    gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);

    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

    gtk_window_set_icon(GTK_WINDOW(window), create_pixbuf("web.png"));

    gtk_widget_show(window);

 

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

 

    gtk_main();

    return 0;

}

 

 

     加-减

综合实例:

建立一个窗口,此窗口包含两个按钮(一个“加”,一个“减”)和一个标签(显示数字)。当按下按钮“加”或“减”时,数字跟着相应变化。

 

#include <gtk/gtk.h>

 

gint count = 0;

char buf[5];

 

void increase(GtkWidget *widget, gpointer label)

{

    count++;

    sprintf(buf, "%d", count);

    gtk_label_set_text(GTK_LABEL(label), buf);

}

 

void decrease(GtkWidget *widget, gpointer label)

{

    count--;

 

    sprintf(buf, "%d", count);

   gtk_label_set_text(GTK_LABEL(label), buf);

}

 

int main( int argc, char **argv)

{

    GtkWidget *label;

    GtkWidget *window;

    GtkWidget *frame;

    GtkWidget *plus;

    GtkWidget *minus;

 

    gtk_init( &argc, &argv);

 

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

    gtk_window_set_default_size(GTK_WINDOW(window), 250, 180);

    gtk_window_set_title(GTK_WINDOW(window), "+/-");

   

    frame = gtk_fixed_new();

    gtk_container_add(GTK_XONTAINER(window), frame);

   

    plus = gtk_button_new_with_label("+");

    gtk_widget_set_size_request( plus, 80, 35);

    gtk_fixed_put(GTK_FIXED(frame), plus, 50, 20);

 

    minus= gtk_button_new_with_label("-");

    gtk_widget_set_size_request( minus, 80, 35);

    gtk_fixed_put(GTK_FIXED(frame), plus, 50, 80);

 

    label = gtk_label_new("0");

    gtk_fixed_put(GTK_FIXED(frame), label, 190, 58);

 

   gtk_widget_show_all(window);

 

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

    g_signal_connect(plus, "clicked",G_CALLBACK(increase),label);

    g_signal_connect(minus, "clicked",G_CALLBACK(decrease),label);

  

    gtk_main();

 

    return 0;

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值