龙空技术网

用GTK+来创建一个带界面的C语言程序9——创建工具栏

suo索 187

前言:

现时咱们对“c语言程序设计图标怎么设置”大体比较讲究,兄弟们都想要学习一些“c语言程序设计图标怎么设置”的相关知识。那么小编在网络上搜集了一些有关“c语言程序设计图标怎么设置””的相关文章,希望姐妹们能喜欢,你们快快来了解一下吧!

在图形界面编程中,工具条控件经常与菜单一起使用来快速执行某些经常用的菜单项的功能。工具条通常包含带有命令的图标按钮,但也包括其他控件。工具条在图形界面中应用很平凡,特别是一些编辑器类的软件,更是经常会用到。那么在这一节中将介绍如何创建和使用工具条控件,灵活地为工具条添加按钮、其他控件并为这些控件的信号添加回调函数。

一、创建工具条控件

通过调用gtk_toolbar_new()函数来创建工具条,这个函数很简单,它没有任何参数。函数原型为:

GtkWidget * gtk_toolbar_new(void); //创建工具条

创建好工具条后可添加到窗口或者其他容器中。但是此时的工具条没有任何按钮的工具条,我们还要在上面添加一些带图标按钮的控件。

二、向工具条中加内容

工具栏可以包含GtkToolItem子类的实例。GtkToolItems是可以出现在工具栏上的小部件。使用gtk_tool_item_new()创建包含按钮以外内容的工具栏项。使用gtk_container_add()将子小部件添加到工具项。要将GtkToolItem添加到一个工具栏,请使用gtk_toolbar_insert()。要从工具栏中删除项,请使用gtk_container_remove()。要向工具栏添加按钮,请添加GtkToolButton的实例。这里我们向工具栏添加一个GtkToolButton的实例。

创建一个GtkToolButton,使用icon_widget作为内容和使用label作为标签创建一个新的GtkToolButton

GtkToolItem *gtk_tool_button_new (GtkWidget *icon_widget,const gchar *label);

icon_widget: 一个将被用作按钮内容的widget,或者为NULL

label:按钮的标签

添加到工具栏中:

void gtk_toolbar_insert (GtkToolbar *toolbar,GtkToolItem *item,gint pos);

在工具栏的pos位置插入一个GtkToolItem。如果pos为0,则该项被放置在工具栏的开头。如果pos为负数,则该项被附加到工具栏的末端。

参数:

toolbar:一个GtkToolbar

item:一个GtkToolItem

pos:新项目的位置

创建工具条代码如下:

/*工具条的创建*/

#include<gtk/gtk.h>

void on_clicked(GtkToolItem * button, gpointer data)

{

const gchar * string = gtk_tool_button_get_label(GTK_TOOL_BUTTON(button));

g_print("%s!\n",string);

}

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

{

GtkWidget * window;

GtkWidget * box;

GtkWidget * toolbar;

GtkToolItem * copy, *open, *save,*cut;

GtkToolItem * entry;

GtkWidget * searchEntry;

GtkWidget * open_image, *copy_image, *save_image, * cut_image;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

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

gtk_window_set_default_size(GTK_WINDOW(window), 500, 400);

gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

gtk_window_set_title(GTK_WINDOW(window), "工具条的创建");

box = gtk_box_new(GTK_ORIENTATION_VERTICAL,0);

gtk_container_add(GTK_CONTAINER(window), box);

open_image = gtk_image_new_from_file("./image/Open.png");

copy_image = gtk_image_new_from_file("./image/Copy.png");

save_image = gtk_image_new_from_file("./image/Save.png");

cut_image = gtk_image_new_from_file("./image/Cut.png");

toolbar = gtk_toolbar_new();

//改变工具栏的视图,以只显示图标,只显示文本或者同时显示

/*

GTK_TOOLBAR_ICONS Buttons display only icons in the toolbar.

GTK_TOOLBAR_TEXT Buttons display only text labels in the toolbar.

GTK_TOOLBAR_BOTH Buttons display text and icons in the toolbar.

GTK_TOOLBAR_BOTH_HORIZ Buttons display icons and text alongside each other, rather than vertically stacked

*/

gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH);

gtk_container_set_border_width(GTK_CONTAINER(toolbar), 0);

//创建一个带图标和标签的GtkToolButton

open = gtk_tool_button_new(open_image, "打开");

copy = gtk_tool_button_new(copy_image, "复制");

save = gtk_tool_button_new(save_image, "保存");

cut = gtk_tool_button_new(cut_image, "剪切");

searchEntry = gtk_entry_new();

entry = gtk_tool_item_new();

gtk_container_add(GTK_CONTAINER(entry), searchEntry);

g_signal_connect(G_OBJECT(open), "clicked", G_CALLBACK(on_clicked), NULL);

g_signal_connect(G_OBJECT(copy), "clicked", G_CALLBACK(on_clicked), NULL);

g_signal_connect(G_OBJECT(save), "clicked", G_CALLBACK(on_clicked), NULL);

g_signal_connect(G_OBJECT(cut), "clicked", G_CALLBACK(on_clicked), NULL);

gtk_toolbar_insert(GTK_TOOLBAR(toolbar), open, 0);

gtk_toolbar_insert(GTK_TOOLBAR(toolbar), copy, -1);

gtk_toolbar_insert(GTK_TOOLBAR(toolbar), save, -1);

gtk_toolbar_insert(GTK_TOOLBAR(toolbar), cut, -1);

gtk_toolbar_insert(GTK_TOOLBAR(toolbar), entry, -1);

gtk_box_pack_start(GTK_BOX(box), toolbar, FALSE, FALSE, 0);

gtk_widget_show_all(window);

gtk_main();

return FALSE;

}

运行结果:

工具栏创建

这时我们就可以把前面介绍过的菜单栏的创建和使用和本节的内容联系起来,向窗口上添加菜单,使我们的窗口内容更加丰富。感兴趣的话可以自己实现一下,效果如下:

带有菜单和工具条的窗口

标签: #c语言程序设计图标怎么设置