`
dato0123
  • 浏览: 970969 次
文章分类
社区版块
存档分类
最新评论

GTK+学习笔记2——布局管理

 
阅读更多

GTK+中用于管理各种构件布局的是一类特殊的构件,称作布局容器(Layout Containers),这类构件不可见,并且有很多种,常用的有以下几种:

GtkHBox:水平组装盒

GtkVBox:垂直组装盒

GtkTable:表组装

GtkAlignment:可以控制子构件的对其方式和大小


GtkHBox和GtkVBox

GtkHBox可以将它的子构件横向排列,GtkVBox可以将它的子构件纵向排列。创建构件盒的函数如下:

homogeneous是一个布尔值,为TRUE时,强制盒中的构件都占用相同大小的空间,不管每个空间的大小。
spacing是以像素为单位设置的构件之间的间距。


建好组装盒后,用如下函数向盒中添加构件:

两个函数的用法可以参考API手册。
下面用这两个构件设计一个如下样式的窗口:

代码如下:

效果如下:


GtkTable

表组装构件可以建立一个表格,构件可以填满我们指定的单元格,一个构件可以占用一个单元格,也可以占用多个。和其他构件类似,建立表需要用到下面的函数:

rows是表的行数,columns是表的列数,

homogeneous确定了表内单元格的大小的处理方式,如果为TRUE,所有单元格的大小都将调整为表内最大构件的大小,如果为FALSE,单元格的大小将根据同行内最高的构件和同列中最宽的构件来确定。
行与列为从0到n编号,n是调用 gtk_table_new 时所指定的值。所以,如果你指定rows = 2及columns = 2, 布局图会看起来像这样:



建立表后,用如下函数向表内添加构件:

table是你已经创建的表,child是你想放进表里的构件。
left_attach和right_attach参数指定构件放置的位置,并使用多少单元格来放。如果你想在2x2的表中的右下单元格处放入一个按钮,并且想让它只填充这个单元格,则left_attach应该为 = 1, right_attach = 2, top_attach = 1, bottom_attach = 2。

xoptions及yoptions是用来指定组装时的选项,可以通过使用“位或”运算以允许多重选项。这些选项是:
GTK_FILL:如果表框大于构件,同时GTK_FILL被指定,该构件会扩展开以使用所有可用的空间。
GTK_SHRINK:如果表构件分配到的空间比需求的小(通常是用户在改变窗口大小的时候),那么构件将会推到窗口的底部以外的区域,无法看见。如果GTK_SHRINK被指定了,构件将和表一起缩小。
GTK_EXPAND:这会导致表扩展以用完窗口中所有的保留空间。

Padding会在构件的周围产生一个指定象素的空白区域。


下面的代码将绘制一个2*2的表格,并添加两个按钮:

效果如下:



GtkAlignment

这个构件可以用比例的方式设定它的子构件的显示位置和占用空间,用如下函数新建一个Alignment构件:

四个参数都是介于0.0与1.0间的浮点数。
xalign和yalign是子构件的位置,左上角为0,右下角为1。
xscale和yscale是子构件在横竖两个方向上占用空间的比例,0为子构件的实际大小,1为全部占用。


用下面的函数将子构件添加到Alignment构件中,每个Alignment构件只能添加一个子构件:


下面是一个例子:

不同的参数会产生不同的效果:

gtk_alignment_new(0.5,0.5,0,0);



gtk_alignment_new(0,0,0,0);



gtk_alignment_new(1,1,0,0);



gtk_alignment_new(1,1,1,1);



gtk_alignment_new(0.5,0.5,0.5,1);



分享到:
评论

相关推荐

    GTK+-2.0-中文手册.pdf.7z

    4. **布局管理**:讲解 GTK+ 提供的不同布局管理器(如盒式布局、格子布局和流式布局),帮助开发者组织和排列界面元素。 5. **信号与回调**:深入解析 GTK+ 的事件处理机制,包括信号的定义、连接回调函数,以及...

    linux gtk+-2.0.zip

    GTK+提供了用于构建GUI应用程序的各种控件、布局管理和事件处理机制。开发者可以使用C语言来编写GTK+应用,也可以通过绑定到其他语言,如Python、Perl或Vala来使用。 3. **gettext-0.18.1.1.tar.gz**:这是一个用于...

    GTK+ Reference Manual (GTK+ 参考手册 英文) for GTK+ 2.14.3

    GTK+ 参考手册 for GTK+ 2.14.3,最新英文版 GTK+ is a library for creating graphical user interfaces. It works on many UNIX-like platforms, Windows, and on framebuffer devices. GTK+ is released under ...

    Gtk+ 3.6.4 win64.zip

    2. 使用Gtk+开发: - GTK Builder:用于构建UI的XML文件,简化了用户界面的代码设计。 - GObject:基础对象模型,是所有Gtk+组件的基础,支持面向对象的编程。 - Glade:一款可视化的UI设计器,可以用来创建GTK+...

    GTK+3.0详细的说明文档

    GTK+提供了多种布局管理器,如网格(GtkGrid)、盒式布局(GtkBox)和堆栈布局(GtkStack),帮助组织和对齐控件。这些管理器可以根据窗口大小变化自动调整控件的位置和大小。 4. **样式和主题**: GTK+3.0引入了...

    gtk+ gtk+-bundle_2.18.7-20100213_win32

    7. src:源代码目录,可能包含部分GTK+库的源代码,供开发者学习和调试使用。 8. manifest:通常在Windows中,这是一个清单文件,列出了程序包的组件,用于安装和注册组件到系统。 9. lib:包含GTK+库的静态和动态...

    GTK+程序设计中文版 .pdf

    GTK+ 程序设计中文版 GTK+ 是一种函数库,用来帮助制作图形交互界面。整个函数库都是由 C 语言来编写的。GTK+ 函数库通常也叫做 GIMP 工具包,因为,一开始 GTK+ 是用来编写“GIMP” – 这个图形处理软件的。从那...

    gtk+-bundle_2.24.10-20120208_win32.zip

    2. **对象导向**:GTK+基于C语言设计,但通过面向对象的设计原则,提供了类和对象的概念,使得开发更加模块化和可维护。 3. **主题引擎**:GTK+支持可更换的主题,允许用户自定义界面外观,提供丰富的视觉体验。 4. ...

    GTK+程序设计中文版PDF

    1. **GTK+基础**:介绍GTK+的基本概念,包括窗口、控件、布局管理器等,以及如何初始化和管理GTK+应用程序。 2. **控件与小部件**:详细讲解各种GTK+控件,如按钮、文本框、复选框、单选按钮、滚动条、菜单、对话框...

    基于C gtk/gtk+ sqlite3选课系统的开发

    GTK+提供了丰富的控件和布局管理,使开发者能够轻松创建美观且功能齐全的应用程序。在这个选课系统中,我们将使用GTK+来设计和构建用户界面,如菜单、按钮、文本框和列表视图,以便学生和教师进行交互。 SQLite3是...

    GTK+ 图形化应用程序开发 学习笔记

    这个“GTK+图形化应用程序开发学习笔记”包含了关于使用GTK+进行GUI编程的详细教程和实践案例。 GTK+的核心特性包括跨平台支持、丰富的组件库、强大的主题引擎以及对多种编程语言的绑定,如C、C++、Python、Vala等...

    gtk+-bundle_2.22.1-20101229_win64

    5. **src**:可能包含了GTK+ 2.22.1的源代码,允许开发者查看和学习GTK+的内部实现。 6. **lib**:包含了GTK+的库文件,这些文件在编译链接时被加入到应用程序中,使得程序能够调用GTK+的功能。 7. **manifest**:...

    GTK+GNOME程序设计PDF(高清)2

    本书详细介绍了两种Linux图形用户界面开发技术:GTK+/GNOME。主要内容包括:GUI的基本概念,GLib,GTK+及GNOME的...本书虽然适合GTK+和GNOME编程的初学者学习,但不管是程序设计新手还是编程专家,都能从本书中获益。

    GTK+、glade学习(C、Python实现)

    学习GTK+和Glade,不仅可以提升对GUI编程的理解,还能为LinuxCNC界面开发或其他基于GTK+的应用程序提供强大的工具支持。通过阅读提供的教程,可以深入掌握这两项技术,创建出美观且功能丰富的图形用户界面。

    GTK + 2.0教程GTK+ 2.0 Tutorial

    相较于早期版本,GTK+ 2.0引入了众多改进,包括对主题的支持、增强的布局管理以及更好的文档化等特性,使得开发者能够更轻松地构建美观且功能丰富的用户界面。 ##### 2.2 技术特点 - **跨平台性**:GTK+支持多种...

    gtk+-bundle_3.10.4-20131202_win64

    这个特定的资源,“gtk+-bundle_3.10.4-20131202_win64”,是一个专为Windows 64位系统设计的GTK+版本的打包下载,版本号为3.10.4,发布日期为2013年12月2日。它以.zip格式提供,方便用户下载和解压。 GTK+最初是...

    GTK+2.0教程(中文版)

    5. 布局管理:介绍如何使用 GTK+ 的布局管理器来布局组件。 6. 事件处理:介绍如何处理 GTK+ 中的事件,包括键盘和鼠标事件。 7. 对话框和消息框:介绍如何使用 GTK+ 的对话框和消息框来与用户进行交互。 8. 图形...

    gtk+ Visual Studio 2008环境搭建(包含gtk+文件)

    标题中的“gtk+ Visual Studio 2008环境搭建”是指在Windows操作系统上,使用Microsoft Visual Studio 2008开发环境配置GTK+库的过程。GTK+(GIMP Toolkit)是一个跨平台的图形用户界面(GUI)工具包,广泛用于创建...

    最新的基于GTK+的单词数值计算器-linux

    总的来说,这个基于GTK+的单词数值计算器项目为Linux用户和开发者提供了一个实用的工具,并且是一个学习GUI编程和GTK+的好教材。无论是对于日常计算需求,还是作为编程学习的实践项目,它都具有很高的价值。通过深入...

Global site tag (gtag.js) - Google Analytics