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

glade的总体框图:


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

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




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

控件监视区:可以看到界面上全部的控件,同一时候,选中这个控件,可以看到这个控件的详细类型


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



工具栏:经常使用的有下面几个button
新建:新建一个glade文件

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

保存:保存一个glade文件

选择:按了这个button, 才干选择控件

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



如今開始学习Glade的操作。

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

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


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

1)选择主窗体。依据须要设置窗体的对应属性

2)选择布局容器

3)依据须要选择对应的控件,依据须要设置控件的对应属性

第一步:选择主窗体,依据须要设置窗体的对应属性
1)选择窗体




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


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



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




第三步:依据须要选择对应的控件。依据须要设置控件的对应属性(每一个控件的设置方法都几乎相同,这里以“button”为例)
1)选择两个button




2)调整button的位置以及其大小(有两种方法能够设置)

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


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

a) 设置控件的起点坐标

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

4)设置button的属性

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

B)第二button为没边框的button

button去边框



其他控件的操作方法也是几乎相同的。这里就不一一列举。

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

这个标识名称是能够改动的,例如以下图

到这里,我们的界面就已经设置好了(一个主窗体里放了一个固定布局,布局里还放了2个button)。保存这个界面就可以使用。保存的时候选择合适路径以默认方式保存就可以,文件的后缀名能够随意。为了易于辨别文件。我们最好以 .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 工具, 我们能够通过拖放控件的方式高速设计出用户界面。能够非常直观地进行对应的布局。

可是。假设我们要想实现很多其它的功能,如给窗体设置背景图。让button做对应操作,我们还得通过代码实现。

glade仅仅是辅助我们设计窗体,它不是万能的。

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

转自:

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

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

    前面我们学习的水平.垂直和表格布局容器,控件会跟着容器大小的变化进行自己主动适应.而固定布局容器里的控件则不会跟着变化( 则固定不变 ). 固定布局的创建: GtkWidget *gtk_fixed_ ...

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

    接下来,我们做一个布局练习.例如以下图: 我们用表格布局实现,表格布局參考坐标例如以下: 这里我们用到行编辑控件( GtkEntry ). 行编辑的创建: GtkWidget * gtk_entry_ ...

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

    假设我们希望窗体里多放加入几个控件,直接加入是不成功的.由于窗体仅仅能容纳一个控件的容器. 这时候.我们须要借助布局容器,我们先把布局容器加入到窗体里.然后再把所须要加入的控件放在布局容器里. 布局容 ...

  4. vue入门学习(基础篇)

    vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...

  5. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

  6. Hadoop入门学习笔记---part3

    2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...

  7. PyQt4入门学习笔记(三)

    # PyQt4入门学习笔记(三) PyQt4内的布局 布局方式是我们控制我们的GUI页面内各个控件的排放位置的.我们可以通过两种基本方式来控制: 1.绝对位置 2.layout类 绝对位置 这种方式要 ...

  8. PyQt4入门学习笔记(一)

    PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...

  9. Hadoop入门学习笔记---part2

    在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...

随机推荐

  1. OpenCV特征点检测——ORB特征

            ORB算法 目录(?)[+] 什么是ORB 如何解决旋转不变性 如何解决对噪声敏感的问题 关于尺度不变性 关于计算速度 关于性能 Related posts 什么是ORB 七 4 Ye ...

  2. JavaScript--数据结构算法之链表

    数组的缺点:数组的长度固定,增删时比较困难要移动元素,而且数据填满再添加元素比较复杂.js:数组有split(),可以任意的分割.不存在上述问题.主要问题是:js数组都被实现成了对象,和其他语言的数组 ...

  3. 3.SOAP和WSDL的一些必要知识

    转自:https://www.cnblogs.com/JeffreySun/archive/2009/12/14/1623766.html SOAP和WSDL对Web Service.WCF进行深入了 ...

  4. HDU 4010 Query on The Trees (动态树)(Link-Cut-Tree)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4010 题意; 先给你一棵树,有 \(4\) 种操作: 1.如果 \(x\) 和 \(y\) 不在同一 ...

  5. js ---- 实现千位分隔符

    第一种方法: var num = 1234567; var string = num.toString(); var arr = string.split('').reverse(); console ...

  6. int android.support.v7.widget.RecyclerView$ViewHolder.mItemViewType' on a null.....

    Android.support.v7.widget.RecyclerView$ViewHolder.mItemViewType' on a null..空指针问题,费劲心思才找到报空指针的原因: 代码 ...

  7. Android线程间通讯的几种方式

    1.runOnUiThread(Runnable)              在子线程中直接使用该方法,可以更新UI runOnUiThread(new Runnable(){//更新UI       ...

  8. 【习题 7-6 UVA - 12113】Overlapping Squares

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先预处理出来一个正方形. 然后每次枚举新加的正方形左上角的坐标就可以. 注意覆盖的规则,控制一下就可以. 然后暴力判断是否相同. 暴 ...

  9. ImageButton-设置background跟src

    xml中添加ImageButton的background跟src <ImageButton android:id="@+id/tv3" android:layout_widt ...

  10. 5.Zookeeper的两种安装和配置(Windows):单机模式与集群模式

    转自:https://blog.csdn.net/a906998248/article/details/50815031