GTK入门文档格式.docx
- 文档编号:4683867
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:17
- 大小:23.65KB
GTK入门文档格式.docx
《GTK入门文档格式.docx》由会员分享,可在线阅读,更多相关《GTK入门文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
通常,该函数有个相当有限的任务,就是设置结构成员为缺省值。
对于复合构件,这个函数还创建成分(component)构件。
4.tictactoe_clear()是一个公共函数,它复位构件中的按钮。
注意5.gtk_signal_handler_block_by_data()函数用来防止按钮切换信号处理函数被不必要地触发。
6.tictactoe_toggle()是当用户点击按钮时调用的信号处理函数。
它判断开关按钮中是否出现了导致赢的组合,如果是,则发出"
tictactoe"
信号。
7.gtk_init(gint*argc,gchar***argv)会在每个GTK应用程序中调用。
该函数设定了默认的视频(visual)和颜色映射模式(colormap),接着会调用函数gdk_init(gint*argc,gchar***argv)。
该函数初始化要使用的库,设定默认的信号处理,并检查传递给你的程序的命令行参数
8.gtk_widget_show()函数让GTK知道,我们已经设置完构件的属性,可以显示了。
9.gtk_main()是一个可以在每个GTK程序中见到的函数调用。
当程序运行到这里,GTK会“睡着”等待X事件(如按钮或键盘按下)、超时(timeouts)或文件IO通知发生。
四.构件函数
1.构件概述
在GTK中创建一个构件的一般步骤是:
(1)gtk_*_new()-创建各种构件的函数。
这些函数都将在本文档中作详细的介绍。
(2)把所有想连接的信号都连接到对应的信号处理函数。
(3)设定构件的属性。
(4)用gtk_container_add()orgtk_box_pack_start()等适当的函数把构件放置到一个容器构件中。
(5)gtk_widget_show()显示构件。
2.宏(较常见的)
G_OBJECT(object)
GTK_WIDGET(widget)
GTK_OBJECT(object)
GTK_SIGNAL_FUNC(function)
GTK_CONTAINER(container)
GTK_WINDOW(window)
GTK_BOX(box)
这些都用来在函数中转换参数。
所有的GtkWidget都是从GObject这个基本类派生来的。
也就是说,你能把widget传给任何需要以object类型作为参数的函数-只要用一下G_OBJECT()宏。
3.信号和回调函数:
信号和信号处理函数之间的连接:
gulongg_signal_connect(gpointer*object,
constgchar*name,
GCallbackfunc,
gpointerfunc_data);
第一个参数是要发出信号的构件,第二个参数是你想要连接的信号的名称,第三个参数是信号被捕获时所要调用的函数,第四个参数是你想传递给这个函数的数据。
第三个参数指定的函数叫做回调函数,一般为下面的形式:
voidcallback_func(GtkWidget*widget,
gpointercallback_data);
4.组装构件:
●多数组装是通过创建一些“盒(boxes)”来达成的,这是些不可见的构件容器,它们有两种形式:
一种是横向盒(horizontalbox),一种是纵向盒(verticalbox)。
●要创建一个新的横向盒我们调用gtk_hbox_new(),对于纵向盒,用gtk_vbox_new()。
gtk_box_pack_start()和gtk_box_pack_end()函数用来将对象组装到这些容器中。
gtk_box_pack_start()将对象从上到下组装到纵向盒中,或者从左到右组装到横向盒中。
gtk_box_pack_end()则相反,从下到上组装到纵向盒中,或者从右到左组装到横向盒中。
●还有一种组装方式是:
表(table),和盒类似。
5.按钮函数:
●可以用gtk_button_new_with_label()或gtk_button_new_with_mnemonic()来创建一个带标签的按钮,用gtk_button_new_from_stock()来从一个原料(stock)项创建一个包含图像和文本的按钮,或者用gtk_button_new()创建一个空白按钮。
接着你可以决定把一个标签或位图(pixmap)组装到这个新创建的按钮里。
要这样做,创建一个新的盒,然后用常见的gtk_box_pack_start()把你的对象组装到盒里,再用gtk_container_add()把盒组装到按钮里。
●函数xpm_label_box()可用于组装图像和标签到任何可以作为容器的构件里。
6.调整对象:
创建调整对象:
GtkObject*gtk_adjustment_new
获取调整对象的value参数值:
gdoublegtk_adjustment_get_value
7.范围构件RangeWidgets:
●范围构件(RangeWidgets)是一大类构件,包含常见的滚动条构件(ScrollbarWidgets)和较少见的“比例”构件(ScaleWidgets)。
●用下面的函数创建滚动条:
GtkWidget*gtk_hscrollbar_new(GtkAdjustment*adjustment);
GtkWidget*gtk_vscrollbar_new(GtkAdjustment*adjustment);
●分别创建垂直和水平的比例构件:
GtkWidget*gtk_vscale_new(GtkAdjustment*adjustment);
GtkWidget*gtk_vscale_new_with_range(gdoublemin,
gdoublemax,
gdoublestep);
GtkWidget*gtk_hscale_new(GtkAdjustment*adjustment);
GtkWidget*gtk_hscale_new_with_range(gdoublemin,
●比例构件可以在滑槽的旁边以数字形式显示其当前值。
默认行为是显示值,但是可以用下面这个函数改变其行为:
voidgtk_scale_set_draw_value(GtkScale*scale,gbooleandraw_value);
用以下函数改变显示的小数位:
voidgtk_scale_set_digits(GtkScale*scale,gintdigits);
8.范围函数:
●设置更新方式:
范围构件的“更新方式”定义了用户与构件交互时的它的调整对象的value值如何变化,以及如何引发"
value_changed"
信号给调整对象。
更新方式在<
gtk/gtkenums.h>
中定义为enumGtkUpdateType类型,有以下取值:
GTK_UPDATE_CONTINUOUS
这是默认值。
"
信号是连续引发,例如,每当滑块移动,甚至移动最小数量时都会引发。
GTK_UPDATE_DISCONTINUOUS
●只有滑块停止移动,用户释放鼠标键时才引发"
GTK_UPDATE_DELAYED
●当用户释放鼠标键,或者滑块短期停止移动时才引发"
●范围构件的更新方式可以用以下方法设置:
用GTK_RANGE(widget)宏将构件转换,并将它传递给这个函数:
voidgtk_range_set_update_policy(GtkRange*range,
GtkUpdateTypepolicy);
获得和设置调整对象:
GtkAdjustment*gtk_range_get_adjustment(GtkRange*range);
voidgtk_range_set_adjustment(GtkRange*range,
GtkAdjustment*adjustment);
gtk_range_get_adjustment()返回一个指向range所连接的调整对象的指针。
9.标签:
用以下函数创建一个新标签:
GtkWidget*gtk_label_new(constchar*str);
创建标签后,要改变标签你的文本,用以下函数:
voidgtk_label_set_text(GtkLabel*label,constchar*str);
标签构件的文本会自动换行。
用以下函数激活“自动换行”:
voidgtk_label_set_line_wrap(GtkLabel*label,gbooleanwrap);
10.箭头:
只有两个函数用来操纵箭头构件:
GtkWidget*gtk_arrow_new
voidgtk_arrow_set
第一个函数创建新的箭头构件,指明构件的类型和外观;
第二个函数用来改变箭头构件类型和外观。
11.工具提示对象
使用gtk_tooltips_new()函数创建工具提示对象。
因为GtkTooltips对象可以重复使用,一般在应用程序中仅需要调用这个函数一次。
12.进度条:
创建一个新进度条开始:
GtkWidget*gtk_progress_bar_new(void);
13.对话框:
GtkWidget*gtk_dialog_new(void);
GtkWidget*gtk_dialog_new_with_buttons(constgchar*title,
GtkWindow*parent,
GtkDialogFlagsflags,
constgchar*first_button_text,);
第一个函数将创建一个空地对话框
14.颜色:
●颜色构件有两种风格:
GtkColorSelection和GtkColorSelectionDialog。
●GtkWidget*gtk_color_selection_new(void);
它创建一个孤立的颜色选择构件,并需要将其放在某个窗口上。
●GtkWidget*gtk_color_selection_dialog_new(constgchar*title);
这是最常用的颜色选择构件的构建函数,它创建一个颜色选择对话框。
它内部有一个框架构件,框架构件中包含了一个颜色选择构件、一个垂直分隔线构件、一个包含了Ok、Cancel、Help三个按钮的横向盒。
你可以通过访问颜色选择对话框构件结构中的"
ok_button"
"
cancel_button"
和"
help_button"
构件来访问它们
●gtk_color_selection_set_current_color()函数显式地设置颜色选择构件的当前颜色,其中的color参数是一个指向GdkColor的指针。
gtk_color_selection_set_current_alpha()用来设置不透明度(alpha通道)。
其中的alpha值应该在0(完全透明)和65636(完全不透明)之间。
15.状态栏:
●状态栏构件用下面的函数创建:
GtkWidget*gtk_statusbar_new(void);
●有三个函数用来操作状态栏:
gtk_statusbar_push()用于将新消息加到状态栏中,它返回一个消息标识符(MessageIdentifier)。
这个标识符可以和上下文标识符一起传给gtk_statusbar_remove函数以将该消息从状态栏的栈中删除。
函数gtk_statusbar_pop()删除在栈中给定上下文标识符的最上面的一条消息。
●除了显示消息,状态栏还可以显示一个大小改变把柄(resizegrip),用户可以用鼠标拖动它来改变窗口的大小,就像拖动窗口边框一样.下面的函数控制大小改变把柄的显示.
voidgtk_statusbar_set_has_resize_grip(GtkStatusbar*statusbar,gbooleansetting);
gbooleangtk_statusbar_get_has_resize_grip(GtkStatusbar*statusbar);
16.文本输入
●文本输入构件(Entrywidget)允许在一个单行文本框里输入和显示一行文本。
文本可以用函数进行操作,如将新的文本替换、前插、追加到文本输入构件的当前内容中。
●用下面的函数创建一个文本输入构件:
GtkWidget*gtk_entry_new(void);
●下面的函数改变文本输入构件当前的文本内容:
voidgtk_entry_set_text(GtkEntry*entry,constgchar*text);
●文本输入构件的内容可以用下面的函数获取:
constgchar*gtk_entry_get_text(GtkEntry*entry);
如果我们不想通过输入文字改变文本输入构件的内容,我们可以改变它的可编辑状态:
voidgtk_editable_set_editable(GtkEditable*entry,gbooleaneditable);
17.组合框:
●组合框(combobox)是另一个很简单的构件,实际上它仅仅是其它构件的集合。
从用户的观点来说,这个构件是由一个文本输入构件和一个下拉菜单组成的,用户可以从一个预先定义的列表里面选择一个选项,同时,用户也可以直接在文本框里面输入文本。
●用下面的函数创建组合框构件:
GtkWidget*gtk_combo_new(void);
●如果想设置显示在输入框部分中的字符串,可以直接操纵组合框构件内部的文本输入构件:
gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(combo)->
entry),"
MyString."
);
要设置下拉列表中的值,可以使用下面的函数:
voidgtk_combo_set_popdown_strings(GtkCombo*combo,GList*strings);
18.文件选择
●文件选择(fileselection)构件是一种快速、简单的显示文件对话框的方法。
它带有“Ok”、“Cancel”、“Help”按钮。
●创建文件选择构件:
GtkWidget*gtk_file_selection_new(constgchar*title);
●要设置文件名,例如,要在打开时指向指定目录,或者给定一个缺省文件名,可以使用下面的函数:
voidgtk_file_selection_set_filename(GtkFileSelection*filesel,
constgchar*filename);
●要获取用户输入或点击选中的文本,可以使用下面的函数:
gchar*gtk_file_selection_get_filename(GtkFileSelection*filesel);
●在为文件选择构件的信号设置回调函数时,极有可能用到ok_button、cancel_button和help_button指针。
19.框架
●框架(Frames)可以用于在盒子中封装一个或一组构件,框架本身还可以有一个标签。
标签的位置和盒子的风格可以灵活改变。
●框架可以用下面的函数创建:
GtkWidget*gtk_frame_new(constgchar*label);
●标签缺省放在框架的左上角。
传递NULL值作为label参数时,框架不显示标签。
标签文本可以用下面的函数改变:
voidgtk_frame_set_label(GtkFrame*frame,constgchar*label);
20.分栏窗口:
●如果想要将一个窗口分成两个部分,可以使用分栏窗口构件(Thepanedwindowwidgets)。
窗口两部分的尺寸由用户控制,它们之间有一个凹槽,上面有一个手柄,用户可以拖动此手柄改变两部分的比例。
窗口划分可以是水平(HPaned)或垂直的(VPaned)。
●用以下函数之一创建一个新的分栏窗口:
GtkWidget*gtk_hpaned_new(void);
GtkWidget*gtk_vpaned_new(void);
●创建了分栏窗口构件后,可以在它的两边添加子构件。
用下面的函数完成:
voidgtk_paned_add1(GtkPaned*paned,GtkWidget*child);
voidgtk_paned_add2(GtkPaned*paned,GtkWidget*child);
gtk_paned_add1()将子构件添加到分栏窗口的左边或顶部。
gtk_paned_add2()将子构件添加到分栏窗口的右边或下部。
21.滚动窗口
●滚动窗口(Scrolledwindows)用于创建一个可滚动区域,并将其它构件放入其中。
可以在滚动窗口中插入任何其它构件,在其内部的构件不论尺寸大小都可以通过滚动条访问到。
●用下面的函数创建新的滚动窗口:
GtkWidget*gtk_scrolled_window_new(GtkAdjustment*hadjustment,
GtkAdjustment*vadjustment);
第一个参数是水平方向的调整对象,第二个参数是垂直方向的调整对象。
它们一般都设置为NULL。
●voidgtk_scrolled_window_set_policy(GtkScrolledWindow*scrolled_window,
GtkPolicyTypehscrollbar_policy,
GtkPolicyTypevscrollbar_policy);
这个函数可以设置滚动条出现的方式。
第一个参数是要设置的滚动窗口,第二个设置水平滚动条出现的方式,第三个参数设置垂直滚动条出现的方式。
●滚动条的方式取值可以为GTK_POLICY_AUTOMATIC或GTK_POLICY_ALWAYS。
当要求滚动条根据需要自动出现时,可设为GTK_POLICY_AUTOMATIC;
若设为GTK_POLICY_ALWAYS,滚动条会一直出现在滚动窗口上。
22.工具栏:
工具栏(Toolbars)常用来将一些构件分组,这样能够简化定制它们的外观和布局。
用下面的函数创建一个工具栏:
GtkWidget*gtk_toolbar_new(void);
创建工具栏以后,可以向其中追加、前插和插入工具栏项(这里意指简单文本字符串)或元素(这里意指任何构件类型)。
要想描述一个工具栏上的对象,需要一个标签文本、一个工具提示文本、一个私有工具提示文本、一个图标和一个回调函数。
例如,要前插或追加一个按钮,应该使用下面的函数:
GtkWidget*gtk_toolbar_append_item(GtkToolbar*toolbar,
constchar*text,
constchar*tooltip_text,
constchar*tooltip_private_text,
GtkWidget*icon,
GtkSignalFunccallback,
gpointeruser_data);
GtkWidget*gtk_toolbar_prepend_item(GtkToolbar*toolbar,
23.菜单
创建一个附带了菜单的菜单栏所需步骤:
■用gtk_menu_new()创建一个新的菜单
■多次调用gtk_menu_item_new()创建每个你想在你的菜单上出现的菜单项。
并使用gtk_menu_append()将每个新的菜单项放到菜单上。
■用gtk_menu_item_new()创建一个菜单项。
这将是菜单的根(root),上面显示的文本将自己出现在菜单栏上。
■用gtk_menu_item_set_submenu()将菜单绑定到根菜单项(就是上一步创建的那个)。
■用gtk_menu_bar_new创建一个新的菜单栏。
在一个菜单栏上创建一系列菜单时这步只要做一次就行了。
■用gtk_menu_bar_append()将根菜单项放到菜单栏上。
24.GTKrc文件
●rc文件的功能:
在你的应用程序开始处,应包含一个如下的函数调用:
voidgtk_rc_parse(char*filename);
把rc文件名传递给被调用的函数,随后GTK会解析这个文件,并且使用文件中所定义构件类型的风格设置。
●rc文件的格式:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GTK 入门