摘要:【飞利浦·斯塔克|用GTK+来创建一个带界面的C语言程序之第十课——创建工具条|c语言】但是此时的工具条没有任何按钮的工具条,我们还要在上面添加一些带图标按钮的控件。二、向工具条中加内容工具栏可以包含GtkToolItem子类的实例。GtkToolItems是可以出现在工具栏上的小...
按关键词阅读:

文章图片
在图形界面编程中 , 工具条控件经常与菜单一起使用来快速执行某些经常用的菜单项的功能 。 工具条通常包含带有命令的图标按钮 , 但也包括其他控件 。 工具条在图形界面中应用很平凡 , 特别是一些编辑器类的软件 , 更是经常会用到 。 那么在这一节中将介绍如何创建和使用工具条控件 , 灵活的为工具条添加按钮、其他控件并为这些控件的信号添加回调函数 。
一、创建工具条控件
通过调用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_widgetconst gchar *label);
icon_widget: 一个将被用作按钮内容的widget或者为NULL
label:按钮的标签
添加到工具栏中:
void gtk_toolbar_insert (GtkToolbar *toolbarGtkToolItem *itemgint pos);
在工具栏的pos位置插入一个GtkToolItem 。 如果pos为0 , 则该项被放置在工具栏的开头 。 如果pos为负数 , 则该项被附加到工具栏的末端 。
参数:
toolbar:一个GtkToolbar
item:一个GtkToolItem
pos:新项目的位置
创建工具条代码如下:
/*工具条的创建*/
#include<gtk/gtk.h>
voidon_clicked(GtkToolItem *button gpointerdata)
{
constgchar *string=gtk_tool_button_get_label(GTK_TOOL_BUTTON(button));
g_print(\"%s!\\"string);
intmain(intargcchar*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)500400);
gtk_window_set_position(GTK_WINDOW(window) GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(window)\"工具条的创建\");
box =gtk_box_new(GTK_ORIENTATION_VERTICAL0);
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 按钮只显示工具栏中的图标 。
GTK_TOOLBAR_TEXT 按钮只显示工具栏中的文本标签 。
GTK_TOOLBAR_BOTH 按钮在工具栏中显示文本和图标 。
GTK_TOOLBAR_BOTH_HORIZ 按钮将图标和文本并排显示 , 而不是垂直堆叠
*/
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\"保存\");
【飞利浦·斯塔克|用GTK+来创建一个带界面的C语言程序之第十课——创建工具条】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) open0);
gtk_toolbar_insert(GTK_TOOLBAR(toolbar) copy -1);
gtk_toolbar_insert(GTK_TOOLBAR(toolbar) save -1);分页标题#e#
gtk_toolbar_insert(GTK_TOOLBAR(toolbar) cut -1);
gtk_toolbar_insert(GTK_TOOLBAR(toolbar) entry -1);
gtk_box_pack_start(GTK_BOX(box) toolbarFALSEFALSE0);
gtk_widget_show_all(window);
gtk_main();
returnFALSE;
运行结果:
创建工具条
这时我们就可以把第七课菜单栏的创建和使用和本节的内容联系起来 , 向窗口上添加菜单 , 使我们的窗口内容更加丰富 。 感兴趣的话可以自己实现一下 , 效果如下:
带有菜单和工具栏的窗口

来源:(业余C语言爱好者)
【】网址:/a/2021/0130/kd661499.html
标题:飞利浦·斯塔克|用GTK+来创建一个带界面的C语言程序之第十课——创建工具条