01基本界面构件_第1页
01基本界面构件_第2页
01基本界面构件_第3页
01基本界面构件_第4页
01基本界面构件_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基本界面构件,本讲大纲:,按钮构件,调整对象,范围构件,标签,箭头,工具提示对象,进度条,对话框,标尺,按钮构件,调整对象,调整对象不是构件,但是为构件提供了一种以抽象、灵活的方法来传递调整值信息。调整对象最明显的用处就是为范围构件(比如滚动条和比例构件)储存配置参数和值。然而,因为调整对象是从Object派生的,在其正常的数据结构之外,它还具有一些特殊的功能。最重要的是,它们能够引发信号,就像构件一样,这些信号不仅能够让程序对用户在可调整构件上的输入进行响应,还能在可调整构件之间透明地传播调整值。在许多其它的构件中都能够看到调整对象的用处。比如进度条、视角、滚动窗口等。创建一个调整对象许多使用调整对象的构件都能够自动创建它,但是有些情况下,必须自己手工创建。用下面的函数创建调整对象:GtkObject*gtk_adjustment_new(gdoublevalue,gdoublelower,gdoubleupper,gdoublestep_increment,gdouble_increment,gdouble_size);其中的value参数是要赋给调整对象的初始值,通常对应于一个可调整构件的最高或最低位置。lower参数指定调整对象能取的最低值,step_increment参数指定用户能小步增加的值,_increment是用户能大步调整的值。_size参数通常用于设置分栏构件(panningwidget)的可视区域。upper参数用于表示分栏构件的子构件的最底部或最右边的坐标。因而,它不一定总是value能取的最大值,因为这些构件的_size通常是非零值(value能取的最大值一般是upper-_size)。轻松使用调整对象可调整构件大致可以分为两组:一组对这些值使用特定的单位,另一组将这些值当作任意数值。后一组包括范围构件:滚动条、比例构件(scales)、进度条以及微调按钮(spinbutton)。这些构件的值都可以使用鼠标和键盘直接进行调整。它们将调整对象的lower和upper值当作用户能够操纵的调整值的范围。缺省时,它们只会修改调整对象的value参数,也就是说,它们的范围一般都是不变的。另一组包含文本构件、视角构件、复合列表框(compoundlist)以及滚动窗口构件。所有这些构件都是间接通过滚动条进行调整的。所有使用调整对象的构件都可以使用自己的调整对象,或者使用你创建的调整对象,但是最好让这一类构件都使用它们自己的调整对象。一般它们都对value以外的参数作了新的解释,对这些值的解释各个构件都有所不同,需要阅读它们的源代码。,范围构件,标签,标签(Labels)是GTK中最常用的构件,实际上它很简单。因为没有相关联的X窗口,标签不能引发信号。如果需要获取或引发信号,可以将它放在一个事件盒中,或放在按钮构件里面。用以下函数创建一个新标签:GtkWidget*gtk_label_new(constchar*str);GtkWidget*gtk_label_new_with_mnemonic(constchar*str);唯一的参数是要标签显示的字符串。创建标签后,要改变标签你的文本,用以下函数:voidgtk_label_set_text(GtkLabel*label,constchar*str);第一参数是前面创建的标签(用GTK_LABEL()宏转换),第二个参数是新的字符串。如果需要,新字符串需要的空间会做自动调整。在字符串中放置换行符,可以创建多行标签。用以下函数取得标签的当前文本:constgchar*gtk_label_get_text(GtkLabel*label);不要释放返回的字符串,因为GTK内部要使用它。标签的文本可以用以下函数设置对齐方式:voidgtk_label_set_justify(GtkLabel*label,GtkJustificationjtype);jtype的值可以是:GTK_JUSTIFY_LEFT左对齐GTK_JUSTIFY_RIGHT右对齐GTK_JUSTIFY_CENTER居中对齐(默认)GTK_JUSTIFY_FILL充满标签构件的文本会自动换行。用以下函数激活“自动换行”:voidgtk_label_set_line_wrap(GtkLabel*label,gbooleanwrap);wrap参数可取TRUE或FALSE。如果想要使标签加下划线,可以在标签中设置显示模式:voidgtk_label_set_pattern(GtkLabel*label,constgchar*pattern);pattern参数指定下划线的外观。它一串下划线和空格组成。下划线指示标签的相应字符应该加一个下划线。例如,_将在标签的第1、第2个字符和第8、第9个字符加下划线。如果只是想创建一个用下划线代表快捷键(mnemonic)的标签,应该用gtk_label_new_with_mnemonic()函数或gtk_label_set_text_with_mnemonic()函数,而不是用gtk_label_set_pattern()。,箭头,箭头构件(Arrowwidget)画一个箭头,面向几种不同的方向,并有几种不同的风格。在许多应用程序中,常用于创建带箭头的按钮。和标签构件一样,它不能引发信号。只有两个函数用来操纵箭头构件:GtkWidget*gtk_arrow_new(GtkArrowTypearrow_type,GtkShadowTypeshadow_type);voidgtk_arrow_set(GtkArrow*arrow,GtkArrowTypearrow_type,GtkShadowTypeshadow_type);第一个函数创建新的箭头构件,指明构件的类型和外观;第二个函数用来改变箭头构件类型和外观。arrow_type参数可以取下列值:GTK_ARROW_UP向上GTK_ARROW_DOWN向下GTK_ARROW_LEFT向左GTK_ARROW_RIGHT向右显然,这些值指示箭头指向哪个方向,shadow_type参数可以取下列值:GTK_SHADOW_INGTK_SHADOW_OUT(缺省值)GTK_SHADOW_ETCHED_INGTK_SHADOW_ETCHED_OUT,工具提示对象,工具提示对象(Tooltips)就是当鼠标指针移到按钮或其它构件上并停留几秒时,弹出的文本串。工具提示对象很容易使用.不接收事件的构件(没有自己的X窗口的构件)不能和工具提示对象一起工作。可以使用gtk_tooltips_new()函数创建工具提示对象。因为GtkTooltips对象可以重复使用,一般在应用程序中仅需要调用这个函数一次。GtkTooltips*gtk_tooltips_new(void);一旦已创建新的工具提示,并且希望在某个构件上应用它,可调用以下函数设置它:voidgtk_tooltips_set_tip(GtkTooltips*tooltips,GtkWidget*widget,constgchar*tip_text,constgchar*tip_private);第一个参数是已经创建的工具提示对象,其后第二个参数是希望弹出工具提示的构件,第三个参数是要弹出的文本。最后一个参数是作为标识符的文本串,当用GtkTipsQuery实现上下文敏感的帮助时要引用该标识符。可以把它设置为NULL。还有其它与工具提示有关的函数,下面仅仅列出一些函数的简要描述。voidgtk_tooltips_enable(GtkTooltips*tooltips);激活已经禁用的工具提示对象。voidgtk_tooltips_disable(GtkTooltips*tooltips);禁用已经激活的工具提示对象。,进度条,进度条用于显示正在进行的操作的状态。在下面的代码中可以看出,它相当容易使用。下面的内容从创建一个新进度条开始。GtkWidget*gtk_progress_bar_new(void);创建进度条后就可以使用它了。voidgtk_progress_bar_set_fraction(GtkProgressBar*pbar,gdoublefraction);第一个参数是希望操作的进度条,第二个参数是“已完成”的百分比,意思是进度条0-100%已经填充的数量。它以01范围的实数传递给函数。GTK1.2版已经给进度条添加了一个新的功能,那就是允许它以不同的方法显示其值,并通知用户它的当前值和范围。进度条可以用以下函数设置它的移动方向:voidgtk_progress_bar_set_orientation(GtkProgressBar*pbar,GtkProgressBarOrientationorientation);orientation参数可以取下列值之一,以指示进度条的移动方向:GTK_PROGRESS_LEFT_TO_RIGHT从左向右GTK_PROGRESS_RIGHT_TO_LEFT从右向左GTK_PROGRESS_BOTTOM_TO_TOP从下向上GTK_PROGRESS_TOP_TO_BOTTOM从上向下除了指示进度已经发生的数量以外,进度条还可以设置为仅仅指示有活动在继续,即活动状态。这在进度无法按数值度量的情况下很有用。用下面的函数来表明进度有了些进展。voidgtk_progress_bar_pulse(GtkProgressBar*progress);活动指示的步数由以下函数设置:voidgtk_progress_bar_set_pulse_step(GtkProgressBar*pbar,gdoublefraction);在非活动状态下,进度条可以用下列函数在滑槽里显示一个可配置的文本串:voidgtk_progress_bar_set_text(GtkProgressBar*progress,constgchar*text);gtk_progress_set_text()不再支持GTK+1.2版进度条里那种类似printf()的格式参数你可以通过调用gtk_progess_bar_set_text()并把NULL作为第二个参数来关闭文本串的显示进度条的当前文本设置能由下面的函数取得。不要释放返回的字符串constgchar*gtk_progress_bar_get_text(GtkProgressBar*pbar);进度条通常和timeouts或其它类似函数同时使用,使应用程序就像是多任务一样。一般都以同样的方式调用gtk_progress_bar_set_fraction()或gtk_progress_bar_pulse()函数。下面是一个进度条的示例,用timeout函数更新进度条的值和怎样复位进度条。效果如图17.5所示:,对话框,对话构件非常简单,事实上它仅仅是一个预先组装了几个构件到里面的窗口。对话框的数据结构是:structGtkDialogGtkWindowwindow;GtkWidget*vbox;GtkWidget*action_area;从上面可以看到,对话框只是简单地创建一个窗口,并在顶部组装一个纵向盒(vbox),然后在这个纵向盒中组装一个分隔线(separator),再加一个称为“活动区(action_area)”的横向盒(hbox).对话框构件可以用于弹出消息,或者其它类似的任务。这里有两个函数来创建一个新的对话框:GtkWidget*gtk_dialog_new(void);GtkWidget*gtk_dialog_new_with_buttons(constgchar*title,GtkWindow*parent,GtkDialogFlagsflags,constgchar*first_button_text,.);第一个函数将创建一个空地对话框,你现在就可以使用它了。可以组装一个按钮到它的活动区(action_area),就像下面这样:button=.gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)-action_area),button,TRUE,TRUE,0);gtk_widget_show(button);你可以通过组装来扩充活动区,比如增加一个标签,可以像下面这样做:label=gtk_label_new(Dialogsaregroovy);gtk_box_pack_start(GTK_BOX(GTK_DIALOG(window)-vbox),label,TRUE,TRUE,0);gtk_widget_show(label);作为一个示例,可以在活动区里面组装两个按钮:一个“取消”按钮和一个“确定”按钮,再在纵向盒(vbox)里组装一个标签,以便向用户提出疑问,或显示一个错误信息等。然后可以把不同信号连接到每个按钮,对用户的选择进行响应。如果对话框提供的纵向和横向盒的简单功能不能满足你的需要,可以简单地在组装盒中添加其它布局构件。例如,可以在纵向盒中添加一个组装表(table)。更复杂的gtk_dialog_new_with_buttons()函数允许你设置下面的一个或多个参数。GTK_DIALOG_MODAL使对话框使用独占模式。GTK_DIALOG_DESTROY_WITH_PARENTS保证对话框在指定父窗口被关闭时也一起关闭。GTK_DIALOG_NO_SEPARATOR省略纵向盒与活动区之间的分隔线,标尺,标尺构件(Rulerwidgets)一般用于在给定窗口中指示鼠标指针的位置。一个窗口可以有一个横跨整个窗口宽度的水平标尺和一个占据整个窗口高度的垂直标尺。标尺上有一个小三角形的指示器标出鼠标指针相对于标尺的精确位置。首先,必须创建标尺。水平和垂直标尺用下面的函数创建:GtkWidget*gtk_hruler_new(void);/*水平标尺*/GtkWidget*gtk_vruler_new(void);/*垂直标尺*/一旦创建了标尺,我们就能指定它的度量单位。标尺的度量单位可以是GTK_PIXELS,GTK_INCHES或GTK_CENTIMETERS。可以用下面的函数设置:voidgtk_ruler_set_metric(GtkRuler*ruler,GtkMetricTypemetric);默认的度量单位是GTK_PIXELS。gtk_ruler_set_metric(GTK_RULER(ruler),GTK_PIXELS);标尺构件的另一个重要属性是怎样标志刻度单位以及位置指示器一开始应该放在哪里。可以用下面的函数设置:voidgtk_ruler_set_range(GtkRuler*ruler,gdoublelower,gdoubleupper,gdoubleposition,g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论