第17章PPT电子课件02组装盒构件_第1页
第17章PPT电子课件02组装盒构件_第2页
第17章PPT电子课件02组装盒构件_第3页
第17章PPT电子课件02组装盒构件_第4页
第17章PPT电子课件02组装盒构件_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

组装盒构件,本讲大纲:,组装盒的原理,盒的细节,组装盒程序,用表组装,表组装程序,组装盒的原理,但当你想要放置更多的构件到一个窗口中时,如何控制各个构件的定位呢?这时就要用到组装(Packing)了。组装盒的原理多数组装是通过创建一些“盒(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()则相反,下到上组装到纵向盒中,或者右到左组装到横向盒中。使用这些函数允许我们调整自己的构件向左或向右对齐,同时也可以混入一些其它的方法来达到我们想要的设计效果。在我们的示例中多数使用gtk_box_pack_start()。被组装的对象可以是另一个容器或构件。事实上,许多构件本身就是容器,包括按钮,只不过我们通常在按钮中只放入一个标签。通过使用这些调用,GTK就会知道要把构件放到哪里去,并且会自动做调整大小及其它美化的事情。至于如何组装你的构件这里还有一些选项。正如你能想到的,在放置和创建构件时,这些方法给了我们很多的弹性。,盒的细节,由于存在这样的弹性,所以在一开始使用GTK中的组装盒(packingbox)的时候会有点让人迷惑。这里有许多选项,并且它们不容易一眼看出是如何组合在一起的。然而到最后,这里基本上只有五种不同的风格。每一行包含一个带有若干按钮的横向盒。gtk_box_pack是组装每个按钮到横向盒(hbox)的简写。每个按钮都是以同样的方式组装到横向盒里的(例如,以同样参数调用gtk_box_pack_start()函数)。这是gtk_box_pack_start()函数的声明。voidgtk_box_pack_start(GtkBox*box,GtkWidget*child,gbooleanexpand,gbooleanfill,guintpadding);第一个参数是你要把对象组装进去的盒,第二个就是该对象。目前这些对象将都是按钮,即我们要将这些按钮组装到盒中。gtk_box_pack_start()和gtk_box_pack_end()中的expand参数是用来控制构件在盒中是充满所有多余空间这样盒会扩展到充满所有分配给它的空间(TURE);还是盒收缩到仅仅符合构件的大小(FALSE)。设置expand为FALSE将允许你向左或向右对齐你的构件。否则,它们会在盒中展开,同样的效果只要用gkt_box_pack_start()或gtk_box_pack_end()之一就能实现。fill参数在gtk_box_pack中控制多余空间是分配给对象本身(TRUE),还是让多余空间围绕在这些对象周围分布(FALSE)。它只有在expand参数也为TRUE时才会生效。,组装盒程序,用表组装,让我们看看另一种组装的方法-表(Tables)。在某些情况下这是极其有用的。使用表的时候,我们建立格来放入构件。构件可以占满我们所指定的所有空间,第一个要看的,当然是gtk_table_new()这个函数:GtkWidget*gtk_table_new(guintrows,guintcolumns,gbooleanhomogeneous);第一个参数是表中要安排的行的数量,而第二个,显然,就是列的数量。homogeneous参数跟表格框(tablesboxes)的大小处理有关。如果homogeneous是TRUE,所有表格框的大小都将调整为表中最大构件的大小。如果homogeneous为FALSE,每个表格框将会按照同行中最高的构件,与同列中最宽的构件来定自身的大小。行与列为0到n编号,而n是我们在调用gtk_table_new时所指定的值。注意坐标系统开始于左上角。要向框中放置一个构件,使用下面的函数:voidgtk_table_attach(GtkTable*table,GtkWidget*child,guintleft_attach,guintright_attach,guinttop_attach,guintbottom_attach,GtkAttachOptionsxoptions,GtkAttachOptionsyoptions,guintxpadding,guintypadding);第一个参数(table)是你已经创建的表,第二个参数(child)是你想放进表里的构件。left_attach和right_attach参数指定构件放置的位置,并使用多少框来放。如果你想在2x2的表中的右下表项(tableentry)处放入一个按钮,并且想让它只充满这个项,则left_attach应该为=1,right_attach=2,top_attach=1,bottom_attach=2。现在,如果想让一个构件占据我们这个2x2表的整个顶行,你就用left_attach=0,right_at

温馨提示

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

评论

0/150

提交评论