没事儿找事儿————gtk学习(给窗体添加按钮)

       上一篇完善了一下窗体,但是仅仅一个窗体没有什么用,我们需要大量的其他控件。那么我们慢慢来。先从最基本的按钮开始!在上篇的基础上稍微修改代码。

#include<gtk/gtk.h>
void on_button_clicked(GtkWidget *button,gpointer userdata)
{
        g_print("你好,你已经点击了我");
        g_print("%s\n",(gchar *)userdata);
        gtk_button_set_label(GTK_BUTTON(button),(gchar *)userdata);
}
int main(int argc, char *argv[])
{
        GtkWidget *window;
        GtkWidget       *button;
        gchar *str = "I love gtk!";
        gtk_init (&argc, &argv);
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_title (GTK_WINDOW (window), "Hello World 添加按钮");
        gtk_window_set_default_size(GTK_WINDOW(window),400,300);
        gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
        gtk_container_set_border_width(GTK_CONTAINER(window),40);
        g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
        button = gtk_button_new_with_label("点击我");
        g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_button_clicked),(gpointer)str);
        gtk_container_add(GTK_CONTAINER(window),button);
        gtk_widget_show (button);
        gtk_widget_show (window);
        gtk_main ();
        return 0;
}


        gtk控件是统一用GtkWidget类型来管理的,按钮控件也不例外。我们可以用gtk_button_new来创建一个不显示任何东西的按钮。也可以用gtk_button_new_with_label来创建一个带有文字标签的按钮。
       gtk函数的特色是以gtk开头,用下划线连接。第二个词表示控件的类型,后面的词表示要做的动作。比如new_with_label。set_default_size和set_position等等基本能见其名知其意。
      gtk中的控件摆放采用容器这个概念。gtk所有的控件能分成两类,一类是能容纳其他控件的容器,一类是不能容纳其他控件的非容器控件。容器控件有分成能容纳多个控件的容器和只能容纳一个控件的容器。
      窗口控件也是一种容器,它可以容纳按钮控件。gtk_container_add函数的作用是将第二个参数代表的控件加入到,第一个参数
 所代表的容器中来。第一个参数是GtkContainer型的指针。所有需要GTK_CONTAINER这个宏来进行转换。

没事儿找事儿————gtk学习(给窗体添加按钮)_第1张图片没事儿找事儿————gtk学习(给窗体添加按钮)_第2张图片

你可能感兴趣的:(没事儿找事儿————gtk学习(给窗体添加按钮))