Advertisement

Gtk+的布局(Layout) 一、垂直、水平布局

阅读量:

Gtk+界面与Java及QT界面大体上是相同的。主要分为垂直排列(Vertical)、水平排列(Horizontal)、表格形式(Table)以及固定区域(Fixed)四种基本类型。对于那些没有像Delphi那样的设计窗体IDE的情况而言,在完全依赖代码编写界面时,通常会采用垂直排列(Vertical)、水平排列(Horizontal)以及表格形式(Table)等较为常用且易于掌控的方式;而如果具备良好的二维空间或三维空间思维能力,则可以考虑使用固定区域(Fixed)。此外Glade Interface Designer则是一种用于配置Gtk+图形用户界面的强大工具;当然这需要一定的学习成本

Gtk+垂直布局(VLayout)遵循GtkVBox的层级式布局机制,在容器内部集成多种组件(如:按钮、标签、框架等),支持多种交互操作组件(例如:GtkButton,GtkLabel,GtkFrame,GtkEntry,GtkCombox等),可通过以下方式创建一个垂直盒式布局容器:

GtkVBox* gtk_vbox_new(gbool homogeneous, int spacing);其中该函数用于生成具有指定属性的VBox布局。

Example:GtkWidget *vbox = gtk_vbox_new(TRUE,5);

在Gtk+框架中,水平布局(HLayout)通常会使用GtkHBox作为基础组件进行构建。为了实现这一目标,请按照以下步骤操作:依次设置必要的属性参数,并将这些子组件放置到该盒子中。

GTK_WIDGET* gtk_hbox_new(gbool homogeneous, int spacing);各参数意义相同,此处不再详细解释

当采用上述两种容器时都应配合运用以下的这些函数列举如下在容器中集成子组件

void start(GtkBox* box, GtkWidget* child, bool expand, bool fill, uint padding);

该函数用于将 child widget 包围到 box 中,并根据 expand 和 fill 参数控制包入的方式以及填充策略

void gtk_box_pack_start_defaults(GtkBox *box,GtkWidget *child);

void gtk_box_pack_end_defaults(GtkBox *box,GtkWidget *child);

box 参数代表一种包装容器类构件, child 参数代表用于嵌套构建的小型构件, expand 参数是否允许组件进行扩展性配置, fill 参数是否负责填充指定的区域, padding 参数定义各子构件之间的间距大小.

gtk_box_pack_start函数用于从前向后(即自上而下)排列子组件,
gtk_boxPack_end函数用于自后向前(即由下至上)安排子组件,
在default设置中, expand和fill参数被设置为True, padding参数被设置为0。

在本部分我们对Gtk+布局中的垂直和水平布局进行了简要介绍,并随后计划将提供详细的实例代码

全部评论 (0)

还没有任何评论哟~