GTK+图形化应用程序开发学习笔记(十)—工具条
来源:互联网 发布:程序员 美少女 动漫 编辑:程序博客网 时间:2024/06/18 09:21
工具条(GtkToolbar)为用户提供常用命令的简便菜单。工具条通常包含带有表示命令的图标的按钮,但也能包含其他构件。工具条在软件中应用很平凡,特别是编辑类的软件如office.
下面我就介绍如何建立一个工具条,大家看完本节就可以建立如下的工具条了。
1.
名称::
gtk_toolbar_new
功能:
创建工具条
头文件:
#include <gtk/gtk.h>
函数原形:
Gtk_Widget* gtk_toolbar_new(void);
参数:
无
返回值:
新的工具条
gtk_toolbar_new用来建立工具条,这个函数很简单,它没有任何参数。
用gtk_toolbar_new函数建立的工具条是还没有任何按钮的工具条,我们还要在上面填加一些带图标的按钮。我们用gtk_toolbar_append_item添加按钮。
注意gtk_toolbar_append_item会自动去生产带图标的按钮,并不需要程序员预先创建按钮。
2.
名称::
gtk_toolbar_append_item
功能:
添加带图标的按钮
头文件:
#include <gtk/gtk.h>
函数原形:
Gtk_Widget* gtk_toolbar_append_item(GtkToolbar *toolbar, const char *text,const char *tooltip_text, const char *tooltip_private_text, GtkWidget *widget, GtkSignalFunc callback, gpointer userdata);
参数:
toolbar 工具条
text 按钮正文
tooptip_text 工具提示正文
tooptip_private_text 用于GtkTipsQuery
widget 放在按钮上的图标
callback 回调函数
userdata 传递给回调函数的附加参数
返回值:
添加后的按钮
看起来有点恐怖,其实并不复杂。下面我们分别介绍函数的参数。
toolbar是待加入按钮的工具条,也就是我们用gtk_toolbar_new建立的空白工具条了。
text是工具条按钮的正文,也就是上图的“电灯”、“笑脸”之类的。它通常显示在图标的下面。
tooptip_text是按钮的提示,当用户将鼠标移动到上面时显示提示。
tooptip_private_text参数我们暂时先不管它。
widget方在按钮上的图标了,它通常是一个图片构件。或是一个像元图。
像元图是使影像构件,建立像元图的一种方式是从图形编辑软件(如GIMP)中建立它。建立像元图很麻烦,要写一大堆的代码。并且初学者建立的都会很难看。不过感兴趣的朋友可以去看一看。我建议大家用图片构件的方式。我们稍后介绍怎样建立一个图片构件。
callback就是按钮的回调函数了,当用户点击按钮时gtk_toolbar_append_item调用callback函数。
userdata 是传递给回调函数的附加参数。你可以把一些有用的信息通过这个参数传递给回调函数。
哈哈,好了现在我们就可以建立自己的工具条了。
对了,忘记告诉大家怎样建立一个图片构件了。首先要准备几张图标了,如果手头上没有可以去/usr/share文件夹里面找,然后把它放在和程序同一文件夹下面。
3、
名称::
gtk_image_new_from_file
功能:
创建图片构件
头文件:
#include <gtk/gtk.h>
函数原形:
Gtk_Widget* gtk_image_new_from_file(char *file);
参数:
file 图片名
返回值:
新的图片构件
file就是你想创建构件的图片文件了。
下面我们开始编程:
#inclue <gtk/gtk.h>
void ButtonEvent(GtkWidget *widget,gpointer *data);
int main(int argc,char *argv[ ])
{
GtkWidget *window;
GtkWidget *box;/*定义组装盒*/
GtkWidget *toolbar;/*定义工具条*/
GtkWidget *image;/*定义图片构件*/
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_usize(window,200,100);
gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL);
box=gtk_vbox_new(FALSE,0);/*创建组装盒*/
toolbar=gtk_toolbar_new();/*创建工具条*/
gtk_box_pack_start(GTK_BOX(box),toolbar,FALSE,FALSE,TRUE,5);/*把工具条加入组装盒*/
image=gtk_image_new_from_file(“1”);/*创建图片构件,大家可以把参数改为自己的图片文件名*/
gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),“电灯”, “电灯” ,NULL,image,(GtkSignalFunc)ButtonEvent, “电灯”);/*创建工具条里的按钮*/
image=gtk_image_new_from_file(“2”);
gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),“笑脸”, “笑脸” ,NULL,image,(GtkSignalFunc)ButtonEvent, “笑脸”);
image=gtk_image_new_from_file(“3”);
gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),“音乐”, “音乐” ,NULL,image,(GtkSignalFunc)ButtonEvent, “音乐”);
image=gtk_image_new_from_file(“4”);
gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),“相册”, “相册” ,NULL,image,(GtkSignalFunc)ButtonEvent, “相册”);
image=gtk_image_new_from_file(“5”);
gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),“帮助”, “帮助” ,NULL,image,(GtkSignalFunc)ButtonEvent, “帮助”);
gtk_container_add(GTK_CONTAINER(window),box);
gtk_widget_show(toolbar);
gtk_widget_show(box);
gtk_widget_show(window);
gtk_main();
}
void ButtonEvent(GtkWidget *widget,gpointer *data) /*回调函数*/
{
g_print(“%s/n”,data);
}
- GTK+图形化应用程序开发学习笔记(十)—工具条
- GTK+图形化应用程序开发学习笔记(十)—工具条
- GTK+图形化应用程序开发学习笔记(十)—工具条
- GTK+图形化应用程序开发学习笔记(二十)—分栏列表构建
- GTK+图形化应用程序开发学习笔记(二十)—分栏列表构建
- GTK+图形化应用程序开发学习笔记
- 【GTK】GTK+图形化应用程序开发学习笔记(二)—Glib库
- 【GTK】GTK+图形化应用程序开发学习笔记(三)—窗体
- 【GTk】GTK+图形化应用程序开发学习笔记(四)—容器、构件
- 【GTk】GTK+图形化应用程序开发学习笔记(六)—按钮
- 【GTK】GTK+图形化应用程序开发学习笔记(七)—标签构件.事件盒构件
- GTK+图形化应用程序开发学习笔记—菜单
- GTK+图形化应用程序开发学习笔记(二)—Glib库(1)
- GTK+图形化应用程序开发学习笔记(二)—Glib库(2)
- GTK+图形化应用程序开发学习笔记(三)—窗体(1)
- GTK+图形化应用程序开发学习笔记(三)—窗体(2)
- GTK+图形化应用程序开发学习笔记(四)—容器.构件(1)
- GTK+图形化应用程序开发学习笔记(四)—容器.构件(2)
- GTK+图形化应用程序开发学习笔记(九)—菜单(1)
- 简单,好用,实用
- data,bdata,idata,pdata,xdata,code存储类型与存储区
- Buffalo 学习笔记- buffalo.js 源代码注释(二)
- GTK+图形化应用程序开发学习笔记(九)—菜单(2)
- GTK+图形化应用程序开发学习笔记(十)—工具条
- [转贴]我的FVWM配置及注释
- GTK+图形化应用程序开发学习笔记(十一)—箭头构件、工具提示对象
- Emacs 中文手册
- 解析RootKit与反RootKit
- 写给女生的句句名言
- 直接向视频缓冲区输出
- 标题: 请教怎么改Xwindow和fvwm的刷新率?
- GTK+图形化应用程序开发学习笔记(十二)—对话框构件、标尺构件(1)