




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
杂项构件,本讲大纲:,状态栏,文本输入构件,微调按钮,组合框,日历,颜色选择,文件选择,状态栏,状态栏(Statusbars)是一些简单的构件,一般用来显示文本消息。它将文本消息压入到一个栈里面,当弹出当前消息时,将重新显示前一条文本消息。为了让应用程序的不同部分使用同一个状态栏显示消息,状态栏构件使用上下文标识符(ContextIdentifiers)来识别不同“用户”。在栈顶部的消息就是要显示的消息,不管它的上下文是什么。消息在栈里面是以后进先出(last-in-first-out)的方式保存的,而不是按上下文标识符顺序。状态栏构件用下面的函数创建:GtkWidget*gtk_statusbar_new(void);用一个上下文的简短文本描述调用下面的函数,可以获得新的上下文标识符:guintgtk_statusbar_get_context_id(GtkStatusbar*statusbar,constgchar*context_description);有三个函数用来操作状态栏:guintgtk_statusbar_push(GtkStatusbar*statusbar,guintcontext_id,constgchar*text);voidgtk_statusbar_pop(GtkStatusbar*statusbar)guintcontext_id);voidgtk_statusbar_remove(GtkStatusbar*statusbar,guintcontext_id,guintmessage_id);第一个函数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);下面的示例创建了一个状态栏和两个按钮,一个将消息压入到状态栏栈中,另一个将最上面一条消息弹出。,文本输入构件,文本输入构件(Entrywidget)允许在一个单行文本框里输入和显示一行文本。文本可以用函数进行操作,如将新的文本替换、前插、追加到文本输入构件的当前内容中。用下面的函数创建一个文本输入构件:GtkWidget*gtk_entry_new(void);下面的函数改变文本输入构件当前的文本内容。voidgtk_entry_set_text(GtkEntry*entry,constgchar*text);gtk_entry_set_text()函数用新的内容(contents)取代文本输入构件当前的内容。你可以注意到文本输入构件的类(classEntry)体现了可编辑的接口(Editableinterface)(是的,gobject提供了类似Java的接口),它包含更多的函数来操作内容。文本输入构件的内容可以用下面的函数获取。这在下面介绍的回调函数中是很有用的。constgchar*gtk_entry_get_text(GtkEntry*entry);这个函数返回的值在其内部被使用,不要用free()或g_free()释放它。如果我们不想用户通过输入文字改变文本输入构件的内容,我们可以改变它的可编辑状态。voidgtk_editable_set_editable(GtkEditable*entry,gbooleaneditable);上面的函数可以让我们通过传递一个TRUE或FALSE值作为editable参数来改变文本输入构件的可编辑状态。如果想让文本输入构件输入的文本不回显(比如用于接收口令),可以使用下面的函数,它也是取一个布尔值作为参数voidgtk_entry_set_visibility(GtkEntry*entry,gbooleanvisible);文本你的某一部分可以用下面的函数设置为被选中。这个常在为文本输入构件设置了一个缺省值时使用,以方便用户删除它。voidgtk_editable_select_region(GtkEditable*entry,gintstart,gintend);如果我们想在用户输入文本时进行响应,可以为activate或changed信号设置回调函数。当用户在文本输入构件内部按回车键时引发Activate信号;在每次文本输入构件的文本发生变化时引发Changed信号,比如,每输入或删除一个字符。下面的代码是一个使用文本输入构件的示例。,微调按钮,微调按钮(SpinButton)构件通常用于让用户从一个取值范围你选择一个值。它是一个文本输入框和旁边的向上和向下两个按钮组成。点击某一个按钮会让文本输入框你的数值大小在一定范围你改变。文本输入框里也可以直接输入一个特定值。微调按钮构件允许其中的数值没有小数位或具有指定的小数位,并且数值可以按一种可配置的方式增加或减小。在按钮较长时间呈按下状态时,构件的数值会根据工具按下时间的长短加速变化。微调按钮用一个调整对象来维护该按钮能够取值的范围。微调按钮构件因此而具有了很强大的功能。下面是创建调整对象的函数。这里的用意是展示其中所包含的数值的意义:GtkObject*gtk_adjustment_new(gdoublevalue,gdoublelower,gdoubleupper,gdoublestep_increment,gdouble_increment,gdouble_size);调整对象的这些属性在微调按钮构件中有如下用处:value:微调按钮构件的初始值lower:构件允许的最小值upper:构件允许的最大值step_increment:当鼠标左键按下时构件一次增加/减小的值_increment:当鼠标右键按下时构件一次增加/减小的值_size:没有用到,组合框,组合框(combobox)是另一个很简单的构件,实际上它仅仅是其它构件的集合。从用户的观点来说,这个构件是一个文本输入构件和一个下拉菜单组成的,用户可以从一个预先定义的列表里面选择一个选项,同时,用户也可以直接在文本框里面输入文本。下面是从定义组合框构件的结构里面摘取出来的,从中可以看到组合框构件是由什么构件组合形成的:struct_GtkComboGtkHBoxhbox;GtkWidget*entry;GtkWidget*button;GtkWidget*popup;GtkWidget*popwin;GtkWidget*list;.;可以看到,组合框构件有两个主要部分:一个输入框和一个列表。用下面的函数创建组合框构件: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);在使用这个函数之前,先得将要添加的字符串组合成一个GList链表。GList是一个双向链表,是GLib的一部分,而GLib是GTK的基础。暂时你可以先设置一个GList指针,其值设为NULL,然后用下面的函数将字符串追加到链表当中:GList*g_list_append(GList*glist,gpointerdata);要注意的是:一定要将GList链表的初值设为NULL,必须将g_list_append()函数返回的值赋给要操作的链表本身。,日历,日历(Calendar)构件是显示和获取每月日期等信息的高效方法。它是一个很容易创建和使用的构件。创建日历构件的方法和其它构件的类似:GtkWidget*gtk_calendar_new(void);有时候,需要同时对构件的外观和内容做很多的修改。这时候可能会引起构件的多次更新,导致屏幕闪烁。可以在修改之前使用一个函数将构件“冻结”,然后在修改完成之后再用一个函数将构件“解冻”。这样,构件在整个过程中只做一次更新。voidgtk_calendar_freeze(GtkCalendar*Calendar);voidgtk_calendar_thaw(GtkCalendar*Calendar);这两个函数和其它构件的冻结/解冻(freeze/thaw)函数作用完全一样。日历构件有几个选项,可以用来改变构件的外观和操作方式。使用下面的函数可以改变这些选项:voidgtk_calendar_display_options(GtkCalendar*calendar,GtkCalendarDisplayOptionsflags);下面的函数用于设置当前要显示的日期:gintgtk_calendar_select_month(GtkCalendar*calendar,guintmonth,guintyear);voidgtk_calendar_select_day(GtkCalendar*calendar,guintday);,颜色选择,颜色选择构件是一个用来交互式地选择颜色的构件。这个组合构件让用户通过操纵RGB值(红绿蓝)和HSV值(色度、饱和度、纯度)来选择颜色。这是通过调整滑动条(sliders)的值或者文本输入构件的值,或者从一个色度/饱和度/纯度条上选择相应的颜色来实现的。还可以通过它来设置颜色的透明性。目前,颜色选择构件只能引发一种信号:color_changed。它是在构件你的颜色值发生变化时,或者通过gtk_color_selection_set_color()函数显式设置构件的颜色值时引发。现在可以看一下颜色选择构件能够为我们提供一些什么。这个构件有两种风格:GtkColorSelection和GtkColorSelectionDialog。GtkWidget*gtk_color_selection_new(void);一般很少直接使用这个函数。它创建一个孤立的颜色选择构件,并需要将其放在某个窗口上。颜色选择构件是VBox构件派生的。GtkWidget*gtk_color_selection_dialog_new(constgchar*title);这是最常用的颜色选择构件的构建函数,它创建一个颜色选择对话框。它内部有一个框架构件,框架构件中包含了一个颜色选择构件、一个垂直分隔线构件、一个包含了Ok、Cancel、Help三个按钮的横向盒。你可以通过访问颜色选择对话框构件结构中的ok_button,cancel_button和help_button构件来访问它们。voidgtk_color_selection_set_has_opacity_control(GtkColorSelection*colorsel,gbooleanhas_opacity);颜色选择构件支持调整颜色的不透明性(一般也称为alpha通道)。缺省值是禁用这个特性。调用下面的函数,将has_opacity设置为TRUE启用该特性。同样,has_opacity设置为FALSE时将禁用此特性。voidgtk_color_selection_set_current_color(GtkColorSelection*colorsel,GdkColor*color);voidgtk_color_selection_set_current_alpha(GtkColorSelection*colorsel,guint16alpha);可以调用gtk_color_selection_set_current_color()函数显式地设置颜色选择构件的当前颜色,其中的color参数是一个指向GdkColor的指针。gtk_color_selection_set_current_alpha()用来设置不透明度(alpha通道)。其中的alpha值应该在0(完全透明)和65636(完全不透明)之间。voidgtk_color_selection_get_current_color(GtkColorSelection*colorsel,GdkColor*color);voidgtk_color_selection_get_current_alpha(GtkColorSelection*colorsel,guint16*alpha);当需要查询当前颜色值时,典型情况是接收到一个color_change
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 虚拟时尚搭配直播教学考核试卷
- 服务流程标准化客户沟通规范考核试卷
- 虚拟时尚产品设计趋势考核试卷
- 健康与心血管疾病康复咨询考核试卷
- 价值投资在资产配置中的定位考核试卷
- 节能环保优势考核试卷
- 水产养殖品种养殖密度与生长性能关系考核试卷
- 心理治疗辅助反馈系统考核试卷
- 2025年中国PVC劳防用品数据监测报告
- 2025年中国GPS便携机数据监测报告
- 2025年育婴师职业资格考试试题及答案
- 2023年三种人试题附答案
- 北京市八十中学2025届八年级英语第二学期期中经典试题含答案
- 2024年 金泽镇专职村务工作者招录考试真题试题含答案
- 哇哈哈品牌管理制度
- 2025年内蒙古自治区包头市东河区第二中学英语八年级第二学期期末复习检测模拟试题含答案
- 2025年四川省达州市中考英语真题(原卷版)
- 2024年证券市场基本法律法规真题及答案
- 湖南省2025年高考公安院校公安专业考生档案审核表
- 2025年第十届“学宪法、讲宪法”网络知识竞赛题库(含答案)
- 历史●湖北卷丨2021年湖北省普通高中学业水平选择性考试历史试卷及答案
评论
0/150
提交评论