GTK入门学习:glade的使用

搭建好环境后,在终端敲 glade 即可启动glade工具。

glade的整体框图:

常用控件选择区:列举了常用的控件,常用的有三类:顶层(主窗口等),容器(各种布局容器等),控制和显示(按钮、便签、图片控件等)

当鼠标放在控件时,会自动显示控件的中文文字,同时,还能人为设置,如下图:

界面编辑区:把控件拖放在这进行进行相应的布局

控件监视区:能够看到界面上所有的控件,同时,选中这个控件,可以看到这个控件的具体类型

属性编辑区:编辑选中控件的常用属性,如窗口设置标题、窗口类型、屏幕上显示位置等。

工具栏:常用的有以下几个按钮

新建:新建一个glade文件

打开:打开一个已经存在的glade文件

保存:保存一个glade文件

选择:按了这个按钮, 才能选择控件

拖拽调整大小:按了这个按钮,才能移动控件的位置,改变控件的大小

现在开始学习Glade的操作。

选择控件时,一定要先按工具栏的“选择”按钮

操作时,支持撤销(Ctrl+z)和恢复(Ctrl+y)等window的快捷键

操作的流程和布局的过程是一致的:

1)选择主窗口,根据需要设置窗口的相应属性

2)选择布局容器

3)根据需要选择相应的控件,根据需要设置控件的相应属性

第一步:选择主窗口,根据需要设置窗口的相应属性

1)选择窗口

2)设置窗口标题:我们一起学习Glade;固定窗口大小;设置窗口位置:中心

3)设置窗口的宽度和高度

第二步:选择布局容器(固定布局能允许用户任意布局,所以我们选择此布局)

第三步:根据需要选择相应的控件,根据需要设置控件的相应属性(每个控件的设置方法都差不多,这里以“按钮”为例)

1)选择两个按钮

2)调整按钮的位置以及其大小(有两种方法可以设置)

A)在界面编辑区里通过拖拽方式进行调整

B)通过属性编辑区进行设置(先设置起点坐标,再设置其宽度和高度)

a) 设置控件的起点坐标

b)设置控件的宽度和高度

4)设置按钮的属性

A)第一个按钮作为带文本内容的普通按钮

B)第二按钮为没边框的按钮

按钮去边框

其它控件的操作方法也是差不多的,这里就不一一列举。

在代码操作时,我们需要关心的是,如何通过代码获得这个界面的控件,如本例子中的(主窗口,按钮),而在界面里,每个控件都有一个标识名称,这个标识名称就是在控件监视区的名字,我们代码里就通过这个标识名称来获取界面里的控件:

这个标识名称是可以修改的,如下图

到这里,我们的界面就已经设置好了(一个主窗口里放了一个固定布局,布局里还放了2个按钮),保存这个界面即可使用,保存的时候选择合适路径以默认方式保存即可,文件的后缀名可以任意,为了易于辨别文件,我们最好以 .glade 后缀,这里保存为test.glade。

代码操作

可以简单分为两步:

1)读取glade文件

// 创建GtkBuilder对象,GtkBuilder在<gtk/gtk.h>声明

GtkBuilder *builder = gtk_builder_new();

// 读取test.glade文件的信息,保存在builder指针变量里

gtk_builder_add_from_file(builder, "./test.glade", NULL);

2)获取glade文件里的控件

// 获取窗口控件指针,注意"window1" 要和glade里的标志名称匹配

GtkWidget *window = GTK_WIDGET(gtk_builder_get_object (builder, "window1"));

代码如下:

 #include <gtk/gtk.h>

 int main(int argc,char *argv[])
 {
	//1.gtk初始化
	gtk_init(&argc,&argv);

	//2.创建GtkBuilder对象,GtkBuilder在<gtk/gtk.h>声明
	GtkBuilder *builder = gtk_builder_new();

	//3.读取test.glade文件的信息,保存在builder中
	if ( !gtk_builder_add_from_file(builder,"test.glade", NULL)) {
		printf("connot load file!");
	}

	//4.获取窗口指针,注意"window1"要和glade里面的标签名词匹配
	GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(builder,"window1"));

	GtkButton *button = GTK_BUTTON(gtk_builder_get_object(builder, "button1"));

	const char *text = gtk_button_get_label(button);
	printf("text=%s\n", text);
	gtk_widget_show_all(window);

	gtk_main();

	return 0;
 }

运行结果:

通过上面的例子,利用 glade 工具, 我们可以通过拖放控件的方式快速设计出用户界面,可以很直观地进行相应的布局。但是,如果我们要想实现更多的功能,如给窗口设置背景图,让按钮做相应操作,我们还得通过代码实现。glade只是辅助我们设计窗口,它不是万能的。

源码下载:http://download.csdn.net/download/lianghe_work/8936799

转自:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-06 09:40:45

GTK入门学习:glade的使用的相关文章

GTK入门学习:glade的环境搭建

1) Linux环境搭建 在线安装即可,安装命令如下: 测试是否安装成功,在终端敲 glade 即可: 2)windows版本环境搭建 下载一个windows版本,点击此处即可. 双击后一直"下一步"安装即可. 需要注意的是,如果是windows版本的glade设计界面,保存的时候有 2 种格式,Libglade ( gtk2.12前的版本 ), GtkBuilder( 新版的,现在用的是这个版本 ),格式不一样,最终使用的库函数不一样.如图: 版权声明:本文为博主原创文章,未经博主允

GTK入门学习:信号与回调函数

前面我们学习的GTK界面都是静态的,我们按下按钮它是没有响应的,如何让它有响应呢?接下来我们一起学习GTK的信号与回调函数. GTK采用了信号与回调函数来处理窗口外部传来的事件.消息或信号.当信号发生时,程序自动调用为信号连接的回调函数. 学习应用编程,我们会经常接触到"信号"这个名词.GTK中的"信号"实际上是一种软件中断."中断"在我们生活中经常遇到,譬如,我正在房间里打游戏,突然送快递的来了,把正在玩游戏的我给"中断"了

GTK入门学习:布局容器之表格布局

学习水平和垂直布局容器后,我们几乎能布出任何风格的布局,只需要嵌套使用水平布局容器和垂直布局容器即可.假如我们要完成下图的布局,我们该怎么做呢? 1)创建一个垂直布局容器( A ) 2)创建一个水平布局容器( B ),一个close按钮( C ) 3)将水平布局容器和close按钮添加到垂直布局容器里( 将 B 和 C 添加到 A ) 4)创建button 1按钮( D ) 和 button 2按钮( E ) 5)再将button 1按钮 和 button 2按钮添加到水平布局容器里( 将 D

GTK入门学习:布局容器之固定布局

前面我们学习的水平.垂直和表格布局容器,控件会跟着容器大小的变化进行自动适应,而固定布局容器里的控件则不会跟着变化( 则固定不变 ). 固定布局的创建: GtkWidget *gtk_fixed_new(void); 返回值:固定布局容器指针 固定布局容器添加控件: void gtk_fixed_put( GtkFixed *fixed, GtkWidget *widget, gint x, gint y ); fixed:容纳控件的容器 widget:要添加的控件 x, y:控件摆放位置的起点

GTK入门学习:布局练习之计算器

接下来,我们做一个布局练习,如下图: 我们用表格布局实现,表格布局参考坐标如下: 这里我们用到行编辑控件( GtkEntry ). 行编辑的创建: GtkWidget * gtk_entry_new(void); 返回值:行编辑指针行 编辑内容的设置: void gtk_entry_set_text (GtkEntry *entry,const gchar *text); entry: 行编辑 text: 需要设置的内容 设置行编辑是否允许编辑: void gtk_editable_set_ed

GTK入门学习:布局容器之水平布局

如果我们希望窗口里多放添加几个控件,直接添加是不成功的,因为窗口只能容纳一个控件的容器.这时候,我们需要借助布局容器,我们先把布局容器添加到窗口里,然后再把所需要添加的控件放在布局容器里. 布局容器的主要分类:水平布局( GtkHBox).垂直布局(GtkVBox ).表格布局(GtkTable).固定布局(GtkFixed ). 水平布局容器: 水平布局容器的创建: GtkWidget *gtk_hbox_new( gboolean homogeneous, gint spacing ); h

GTK入门学习:布局容器之垂直布局

垂直布局和水平布局的用法基本是一样,无非是新建垂直布局容器接口,还有控件摆放的方向不同. 垂直布局容器的创建: GtkWidget *gtk_vbox_new( gboolean homogeneous, gint spacing ); 完整代码如下: #include <gtk/gtk.h> int main(int argc, char *argv[]) { //1.gtk初始化 gtk_init(&argc, &argv); //2.创建一个窗口 GtkWidget *w

Retrofit 入门学习

Retrofit 入门学习官方RetrofitAPI 官方的一个例子 public interface GitHubService { @GET("users/{user}/repos") Call<List<Repo>> listRepos(@Path("user") String user); } 这些注解都有一个参数 value,用来配置其路径,比如示例中的 users/{user}/repos, 我们还注意到在构造 Retrofit

JavaSE入门学习21:Java面向对象之接口(interface)(二)

一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.java源文件代码: public class Test{ public static void main(String[] args){ //实现接口Singer Singer s1 = new Student("Amy"); s1.sing(); s1.sleep(); s1.study