Gtk+/Glade 编程(四)布局管理
2016-05-18 23:24
253 查看
原文见: http://jianjiaosun.blog.163.com/blog/static/136124486201121694316493/
当我们设计我们的GUI应用程序时,我们确定使用哪些组件,以及如何组织这些组件。我们使用不可见得“布局容器”对组件进行组织,这一章,我们会使用Glade实现GtkAlignment, GtkFixed, GtkVBox和GtkTable。
一、GtkFixed
GtkFixed容器将子组件放在固定的位置,并且大小固定。这个容器没有自动的布局管理,在大多数的应用程序中,我们不实用GtkFixed
容器。但是有一些特殊的地方,我们使用这个容器。例如游戏,与图表协作的特殊应用程序,可移动并且可以改变大小的组件(如一个在电子表格中的图表),用于
教学的小程序。 由于叫布局容器,所以GtkFixed在容器中,中文叫“固定的”。在Glade中选择组件1.1 在"顶层"中,选择“窗口”1.2 在"容器"中,选择“固定的”1.3 在“控制和显示”中,选择“按钮”1.4 可以通过工具栏中“拖拽并调整工作区部件的大小”调整组件的位置和组件的大小
编写Gtk+程序unanao@debian:~/Experiment/gui/layout-mgt$ cat gtkfixed.c/** * @file gtkfixed.c * @brief simple use of GtkFixed container * @author unanao * @version 0.1 * @date 2011-03-17 */#include
int main(int argc, char *argv[]){ GtkWidget *window; GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new(); gtk_builder_add_from_file(builder, "gtkfixed.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show_all(window);
gtk_main();
return 0;}编译执行:unanao@debian:~/Experiment/gui/layout-mgt$ gcc -o gtkfixed gtkfixed.c -Wall `pkg-config --cflags --libs gtk+-2.0`unanao@debian:~/Experiment/gui/layout-mgt$ ./gtkfixed
二、GtkVBoxGtkVBox是一个盒子容器,可以将1个组件放到其中的1行里面(1个格子里)。使用Glade设计gui1、添加1个窗口2、在“容器”中选择“垂直框”,设置条目数为63、向每一个长方条的框中添加按钮,别且修改,按钮的属性
编写gtk+程序:/** * @file gtkvbox.c * @brief Simple example about using GtkVbox with Glade * @author unanao * @version 0.1 * @date 2011-03-19 */#include
int main(int argc, char *argv[]){ GtkWidget *window; GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new(); gtk_builder_add_from_file(builder, "gtkvbox.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;}编译:gcc -o gtkvbox gtkvbox.c -Wall `pkg-config --cflags --libs gtk+-2.0`执行:./gtkvbox
三、GtkTable
GtkTable的是用方法与GtkVBox的方法基本一样,只是一些表各种添加组件。
设计1个计算器的gui
使用Glade设计GUI
1、添加窗口
2、在“容器”中选择“表格” -- 4*4
3、添加按钮,并且设置按钮的属性(标签)
编写GTK+程序:
unanao@debian:~/Experiment/gui/layout-mgt$ cat gtktable.c
/**
* @file gtktale.c
* @brief simple example about how to use gtktable with glade
* @Compile gcc -o gtktable gtktable.c -Wall `pkg-config --cflags --libs gtk+-2.0`
*
* @author unanao
* @version 0.1
* @date 2011-03-19
*/
#include
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "gtktable.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
gtk_widget_show_all(window);
gtk_main();
return 0;
}
执行结果:
四、GtkAlignment
控制子组件的对其方式和大小
1、添加一个窗口:
2、添加一个垂直框“,条目数为1
3、在垂直框上加入一个”对齐“(在容器中)
4、这只对齐的属性:
[align=left]水平排列:1左右边,0 最左边
垂直排列:1最下边,0最上边
缩放比例:是否随着窗口的变化而变化,0为不变化。
5、添加“水平框”(在容器中),并且设置属性
[/align]
间距设置两个框之间的间距。
6、向“水平框”中添加两个按钮--标签为ok 和 close
Gtk+程序:
/**
* @file gtkalignment.c
* @brief simple use of GtkAlignment container
* @author unanao
* @version 0.1
* @date 2011-03-17
*/
#include
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "gtkalignment.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
执行结果:
当我们设计我们的GUI应用程序时,我们确定使用哪些组件,以及如何组织这些组件。我们使用不可见得“布局容器”对组件进行组织,这一章,我们会使用Glade实现GtkAlignment, GtkFixed, GtkVBox和GtkTable。
一、GtkFixed
GtkFixed容器将子组件放在固定的位置,并且大小固定。这个容器没有自动的布局管理,在大多数的应用程序中,我们不实用GtkFixed
容器。但是有一些特殊的地方,我们使用这个容器。例如游戏,与图表协作的特殊应用程序,可移动并且可以改变大小的组件(如一个在电子表格中的图表),用于
教学的小程序。 由于叫布局容器,所以GtkFixed在容器中,中文叫“固定的”。在Glade中选择组件1.1 在"顶层"中,选择“窗口”1.2 在"容器"中,选择“固定的”1.3 在“控制和显示”中,选择“按钮”1.4 可以通过工具栏中“拖拽并调整工作区部件的大小”调整组件的位置和组件的大小
编写Gtk+程序unanao@debian:~/Experiment/gui/layout-mgt$ cat gtkfixed.c/** * @file gtkfixed.c * @brief simple use of GtkFixed container * @author unanao * @version 0.1 * @date 2011-03-17 */#include
int main(int argc, char *argv[]){ GtkWidget *window; GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new(); gtk_builder_add_from_file(builder, "gtkfixed.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show_all(window);
gtk_main();
return 0;}编译执行:unanao@debian:~/Experiment/gui/layout-mgt$ gcc -o gtkfixed gtkfixed.c -Wall `pkg-config --cflags --libs gtk+-2.0`unanao@debian:~/Experiment/gui/layout-mgt$ ./gtkfixed
二、GtkVBoxGtkVBox是一个盒子容器,可以将1个组件放到其中的1行里面(1个格子里)。使用Glade设计gui1、添加1个窗口2、在“容器”中选择“垂直框”,设置条目数为63、向每一个长方条的框中添加按钮,别且修改,按钮的属性
编写gtk+程序:/** * @file gtkvbox.c * @brief Simple example about using GtkVbox with Glade * @author unanao * @version 0.1 * @date 2011-03-19 */#include
int main(int argc, char *argv[]){ GtkWidget *window; GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new(); gtk_builder_add_from_file(builder, "gtkvbox.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;}编译:gcc -o gtkvbox gtkvbox.c -Wall `pkg-config --cflags --libs gtk+-2.0`执行:./gtkvbox
三、GtkTable
GtkTable的是用方法与GtkVBox的方法基本一样,只是一些表各种添加组件。
设计1个计算器的gui
使用Glade设计GUI
1、添加窗口
2、在“容器”中选择“表格” -- 4*4
3、添加按钮,并且设置按钮的属性(标签)
编写GTK+程序:
unanao@debian:~/Experiment/gui/layout-mgt$ cat gtktable.c
/**
* @file gtktale.c
* @brief simple example about how to use gtktable with glade
* @Compile gcc -o gtktable gtktable.c -Wall `pkg-config --cflags --libs gtk+-2.0`
*
* @author unanao
* @version 0.1
* @date 2011-03-19
*/
#include
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "gtktable.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
gtk_widget_show_all(window);
gtk_main();
return 0;
}
执行结果:
四、GtkAlignment
控制子组件的对其方式和大小
1、添加一个窗口:
2、添加一个垂直框“,条目数为1
3、在垂直框上加入一个”对齐“(在容器中)
4、这只对齐的属性:
[align=left]水平排列:1左右边,0 最左边
垂直排列:1最下边,0最上边
缩放比例:是否随着窗口的变化而变化,0为不变化。
5、添加“水平框”(在容器中),并且设置属性
[/align]
间距设置两个框之间的间距。
6、向“水平框”中添加两个按钮--标签为ok 和 close
Gtk+程序:
/**
* @file gtkalignment.c
* @brief simple use of GtkAlignment container
* @author unanao
* @version 0.1
* @date 2011-03-17
*/
#include
int main(int argc, char *argv[])
{
GtkWidget *window;
GtkBuilder *builder;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file(builder, "gtkalignment.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
执行结果:
相关文章推荐
- 提高PHP编程效率的53个要点
- C#/GetType()与typeof
- php-socket通信
- PHP文件上传处理类
- JAVA大数处理(BigInteger,BigDecimal)
- php 注销
- Java垃圾回收机制--入门
- Java之字符串详解
- Python实现简单爬虫
- 格式化 C语言源码——命令indent
- C/C++ memmove与memcpy的区别及实现
- PYTHON 源码阅读
- java多线程
- 算法(第四版)笔记<一>-------动态队列的数组实现(Java语言)
- Spring学习(二)Spring简介
- java.security.spec.InvalidKeySpecException DerInputStream.getLength(): lengthTag=111, too big.
- Qt Creator: Common Errors When Debugg
- Qt Creator: Common Errors When Debugg
- Springboot入门(使用指南)
- 线程同步和异步问题-Java