G0398 发表于 2014-10-27 20:17:20

C语言GUI程序设计-GTK图文系列-GtkWidget之容器(三)

这一讲讲解GtkFixed和GtkPaned,这两个部件都比较简单

GtkFixed

GtkFixed提供绝对定位布局,可以通过设置坐标来精确摆放子部件的位置,在窗口布局固定的情况下使用。




例程:
#include <gtk/gtk.h>

int main(int argc,char *argv[])
{
    GtkWidget *window,*fixed,*label,*button;
    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window),"hello fishc - GtkFixed");
    gtk_widget_set_size_request(window,300,200);

    fixed = gtk_fixed_new();
    gtk_container_add(GTK_CONTAINER(window), fixed);

    label = gtk_label_new("label1");
    button = gtk_button_new_with_label("button");

    gtk_fixed_put(GTK_FIXED(fixed), label, 20,20);
    gtk_fixed_put(GTK_FIXED(fixed), button, 60,60);

    gtk_widget_show_all(window);
    gtk_main ();

    return 0;
}
gtk_fixed_put函数用来为GtkFixed部件添加子部件,并设置其位置坐标,最后来个参数用来设置子部件在父容器中的位置。

GtkPaned

GtkPaned提供一个可以调节的分割条,把窗口分隔成两个面板。GtkHPaned和GtkVPaned“继承”于GtkPaned,并且在创建GtkPaned时可以设置参数,使其成为GtkHPaned或GtkVPaned,所以这里只讲GtkPaned。




在label1和button直接有个分割条,可以用来调整两侧面板的宽度。
例程:

#include <gtk/gtk.h>

int main(int argc,char *argv[])
{
    GtkWidget *window,*paned,*label,*button;
    gtk_init (&argc, &argv);

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window),"hello fishc - GtkPaned");
    gtk_widget_set_size_request(window,300,200);

    paned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
    gtk_container_add(GTK_CONTAINER(window), paned);

    label = gtk_label_new("label1");
    button = gtk_button_new_with_label("button");

    gtk_paned_add1(GTK_PANED(paned), label);
    gtk_paned_add2(GTK_PANED(paned), button);

    //gtk_paned_set_position(GTK_PANED(paned),150);

    gtk_widget_show_all(window);
    gtk_main ();

    return 0;
}

另外也可以通过代码设置分割条的位置:
gtk_paned_set_position(GTK_PANED(paned),150);




大个的糖果 发表于 2014-10-30 14:44:26

页: [1]
查看完整版本: C语言GUI程序设计-GTK图文系列-GtkWidget之容器(三)