您的位置:首页 > 其它

gtk3示例--buttonbox

2013-01-23 13:41 387 查看
#include <gtk/gtk.h>

static void

print_hello (GtkWidget *widget, gpointer data)

{

g_print("你按的是确定键\n");

}

static void

print_cancel (GtkWidget *widget, gpointer data)

{

g_print("你按的是取消键\n");

}

static void

print_help (GtkWidget *widget, gpointer data)

{

g_print ("你按的是帮助键\n");

}

static GtkWidget *

create_bbox (gint horizontal,

char *title,

gint spacing,

gint layout)

{

GtkWidget *frame;

GtkWidget *bbox;

GtkWidget *button;

frame = gtk_frame_new (title);

if (horizontal)

bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);

else

bbox = gtk_button_box_new (GTK_ORIENTATION_VERTICAL);

gtk_container_set_border_width (GTK_CONTAINER (bbox), 5);

gtk_container_add (GTK_CONTAINER (frame), bbox);

gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), layout);

gtk_box_set_spacing (GTK_BOX (bbox), spacing);

button = gtk_button_new_from_stock (GTK_STOCK_OK);

g_signal_connect (button, "clicked", G_CALLBACK(print_hello), NULL);

gtk_container_add (GTK_CONTAINER (bbox), button);

button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);

g_signal_connect (button, "clicked", G_CALLBACK(print_cancel), NULL);

gtk_container_add (GTK_CONTAINER (bbox), button);

button = gtk_button_new_from_stock (GTK_STOCK_HELP);

g_signal_connect (button, "clicked", G_CALLBACK(print_help), NULL);

gtk_container_add (GTK_CONTAINER (bbox), button);

return frame;

}

GtkWidget *

do_button_box (GtkWidget *do_widget)

{

static GtkWidget *window = NULL;

GtkWidget *main_vbox;

GtkWidget *vbox;

GtkWidget *hbox;

GtkWidget *frame_horz;

GtkWidget *frame_vert;

if (!window)

{

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

gtk_window_set_screen (GTK_WINDOW (window),

gtk_widget_get_screen (do_widget));

gtk_window_set_title (GTK_WINDOW (window), "Button Boxes");

g_signal_connect (window, "destroy",

G_CALLBACK (gtk_widget_destroyed),

&window);

gtk_container_set_border_width (GTK_CONTAINER (window), 10);

main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);

gtk_container_add (GTK_CONTAINER (window), main_vbox);

frame_horz = gtk_frame_new ("Horizontal Button Boxes");

gtk_box_pack_start (GTK_BOX (main_vbox), frame_horz, TRUE, TRUE, 10);

vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);

gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);

gtk_container_add (GTK_CONTAINER (frame_horz), vbox);

gtk_box_pack_start (GTK_BOX (vbox),

create_bbox (TRUE, "Spread", 40, GTK_BUTTONBOX_SPREAD),

TRUE, TRUE, 0);

gtk_box_pack_start (GTK_BOX (vbox),

create_bbox (TRUE, "Edge", 40, GTK_BUTTONBOX_EDGE),

TRUE, TRUE, 5);

gtk_box_pack_start (GTK_BOX (vbox),

create_bbox (TRUE, "Start", 40, GTK_BUTTONBOX_START),

TRUE, TRUE, 5);

gtk_box_pack_start (GTK_BOX (vbox),

create_bbox (TRUE, "End", 40, GTK_BUTTONBOX_END),

TRUE, TRUE, 5);

frame_vert = gtk_frame_new ("Vertical Button Boxes");

gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);

hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);

gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);

gtk_container_add (GTK_CONTAINER (frame_vert), hbox);

gtk_box_pack_start (GTK_BOX (hbox),

create_bbox (FALSE, "Spread", 30, GTK_BUTTONBOX_SPREAD),

TRUE, TRUE, 0);

gtk_box_pack_start (GTK_BOX (hbox),

create_bbox (FALSE, "Edge", 30, GTK_BUTTONBOX_EDGE),

TRUE, TRUE, 5);

gtk_box_pack_start (GTK_BOX (hbox),

create_bbox (FALSE, "Start", 30, GTK_BUTTONBOX_START),

TRUE, TRUE, 5);

gtk_box_pack_start (GTK_BOX (hbox),

create_bbox (FALSE, "End", 30, GTK_BUTTONBOX_END),

TRUE, TRUE, 5);

}

if (!gtk_widget_get_visible (window))

{

gtk_widget_show_all (window);

}

else

{

gtk_widget_destroy (window);

window = NULL;

}

return window;

}

int

main(int argc, char **argv)

{

GtkWidget *do_window = NULL;

gtk_init(&argc, &argv);

do_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

do_window = do_button_box (do_window);

g_signal_connect(GTK_WINDOW(do_window), "destroy", gtk_main_quit, NULL );

//gtk_widget_show(do_window);

gtk_main();

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  示例 gtk3 buttonbox