本文展示了如何创建一个C程序,该程序使用gtk+-3.0来显示一个使用glade 3用户界面设计器创建的窗口。关于MSYS2,glade等软件的安装,请参考之前GTK+系列文章。

Glade是什么?

glade是一个RAD(rapid application develop,快速应用开发)工具,能够为gtk+工具包和gnome桌面环境快速而简单地开发用户界面。Glade中设计的用户界面保存为XML,通过使用GtkBuilder GTK +对象,应用程序可以根据需要动态加载这些界面。通过使用GtkBuilder,Glade XML文件可以用于多种编程语言,包括C,C ++,C#,Vala,Java,Perl,Python等。Glade是根据GNU GPL许可证发布的自由软件。

运行Glade

  1. 打开MSYS2软件,在$后输入glade,回车
  2. Glade软件打开后如图,我在系列文章中的windows平台搭建时就在MSYS2中安装了Glade包

示例

步骤1:创建UI项目文件夹

  1. 创建一个项目,点击图标
  2. 点击保存按钮
  3. 弹出一个对话框,创建项目文件夹,点击图标
  4. 在顶部名称栏中输入自定义的名称
  5. 点击右下角的保存按钮,项目创建完成

步骤2:设置用户界面布局

1.在Glade中创建顶层窗口,如图

2.更改窗口ID

我们现在可以选择更改窗口ID。这是将在C代码中引用窗口的名称。在下图中,它从GtkWindow的默认名称更改为window_main。在Glade窗口右侧的“常规”窗格中进行更改。

3.更改默认窗口大小

可以选择更改窗口的默认大小。这将是由C程序创建时窗口的大小。如需自定义窗口大小,如下图,下图显示窗口大小已更改为640像素宽x 480像素高。

4.将回调函数连接到destroy 信号

当C程序显示当前在glade中设计的窗口时,当窗口关闭时,它将发出destroy 信号。回调函数需要连接到destroy 信号,关闭窗口时,将运行的destroy 信号。

如图,点击“信号”标签,向下滚动,找到GtkWidget ,点击展开项,向下滚动找到destroy。点击<Type here>标签,输入on,软件会给推荐的处理函数名称,选择如图所示的名称,按Enter键确认。

5.更改窗口标题,如图提示操作,输入标题名称

6.保存glade文件,点击右上角按钮

7.创建main.c文件,它将使用​名为helloworld.glade的XML文件创建你上面步骤设计的窗口。将此文件保存到包含已创建的glade文件的同一目录或文件夹中。代码如下图:

注意:

on_window_main_destroy() 为信号处理函数,在Windows平台编译应用程序时,必须使用G_MODULE_EXPORT声明信号回调,否则会出现下图警告,且不能真正退出应用程序。

8.编译代码,在编译代码之前,请确保已安装GTK+3开发库(如果是按照这个系列文章操作的,GTK+-3.0库就已经安装好了)。在MSYS2中输入编译命令:gcc `pkg-config --cflags gtk+-3.0` -o helloworld main.c `pkg-config --libs gtk+-3.0` -Wall

9.运行应用程序,输入./helloworld.exe,效果如下图

结语:

只要按照<GTK+系列---Windows下的GTK+开发平台搭建(Win7 64位)>搭建的环境,就可以完成上面的示例。

GTK+系列---Glade一个用户界面设计器相关推荐

  1. Flex写的一个工作流设计器原型

    流程设计器是编辑流程模版的工具,可视化的流程设计器能直观的编辑流程模版,所见即所得,如下图是我们要做的流程设计器: 流程模版存放流程流转所需要的信息,使用流程设计器来管理流程模版是比较常见的方式,我见 ...

  2. C#用DesignSurface实现一个简单的窗体设计器

    System.ComponentModel.Design.DesignSurface是为设计组件提供一个用户界面,通过它可以实现一个简单的窗体设计器. 在构建之前,我们需要引入System.Desig ...

  3. 通过用 .NET 生成自定义窗体设计器来定制应用程序

    本文讨论: ? 设计时环境基本原理 ? 窗体设计器体系结构 ? Visual Studio .NET 中窗体设计器的实现 ? 为自己的应用程序编写窗体设计器而需要实现的服务 在很多年中,MFC 一直是 ...

  4. Android Studio 2.2 预览版 - 全新的 UI 设计器和约束布局

    转自谷歌官方微信公众号"谷歌开发者" [img=http://img.bbs.csdn.net/upload/201605/30/1464590559_880118.png][/i ...

  5. 水晶报表 jar包版本过低_工具类学习-UReport报表设计器整合

    dada-report报表整合UReport报表设计器工具 结合日常工作和学习实践,针对传统报表子站面临的问题,尝试借助UReport报表设计器解决 1.可在现有工程基础上引入Ureport2报表设计 ...

  6. Stimulsoft Reports ASP.NET HTML5报表设计器

    2019独角兽企业重金招聘Python工程师标准>>> 关于Stimulsoft Reports报表工具,最近一次更新可以说让他有太多的变化了.今天我们就要来写一点关于ASP.NET ...

  7. 基于React和fabricjs开发的在线名片、海报设计器,大前端项目在线图片编辑器源码分享

    基于React和fabricjs开发的在线名片.海报设计器,大前端项目在线图片编辑器 大家好我是伟伟权 现在我给大家介绍一个我的前端项目 这是一个名片设计器 它是使用react加fabric js进行 ...

  8. Web在线打印设计器即将推出,像Excel一样在线设计模板

    软件项目中总会遇到 "单据打印" 需求,特别是国企项目,一直以来没有遇到一个免费的简单好用的打印设计器,大部分项目都是手工编码,"耗时耗力,又各种兼容调试,那个痛苦啊&q ...

  9. html5拖拽表单设计器,require+jquery+backbone实现拖拽式报表设计器-拖拽式表单设计器...

    HTML我帮您-拖拽式报表设计器-拖拽式表单设计器是一个可视化设计器,基于require+jquery+backbone+underscore+bootstrap实现的表单设计器.思想来源于 Layo ...

最新文章

  1. Rsync+sersync同步配置
  2. IOS开发 Block的学习
  3. MySQL的varchar定义长度到底是字节还是字符
  4. Polygon Cruncher减边用法
  5. 一条nginx命令引发的对于容器的思考
  6. redis aof 备份和恢复_深入理解Redis持久化
  7. ----初读《构建之法》的疑虑
  8. java类方法不写权限就时default_Day11_final、权限、内部类
  9. 逻辑回归模型(Logistic Regression)及Python实现
  10. 并发---ConcurrentHashMap
  11. 付费用户金字塔模型在充值消费活动前后的显著差异解读
  12. slopShell:强大的PHP Webshell
  13. 直播电商“变坏”,从罗永浩们开始
  14. Java中的其他常用类(Math类,Scanner类、正则表达式)
  15. 20行Python小程序批量删除GitHub仓库,包
  16. 计算机存储容量1tb等于多少,1tb等于多少mb(1tb等于多少gb)
  17. Golang 在linux中新建用户
  18. SQL语句的基础教程(二)
  19. 气体浓度PPM与mg/m3的换算关系
  20. 下载 https://github.com/android 上的全部源代码

热门文章

  1. 【算法竞赛模板】质因子、质数、约数、余数、快速幂(数论大全)
  2. ChatGPT APP来了,还可以直接订阅Plus账号,操作流程都这篇里面
  3. 威尔逊置信区间 php,威尔逊置信区间排序
  4. 拖延症——想死掉的感觉
  5. python爬取网站四种姿势_python爬取网站数据四种姿势,你值得拥有~
  6. 通用汽车公司选择Qt在其“软件定义汽车”的整车开发流程中发挥突出作用
  7. 【信息系统项目管理师学习笔记】10大管理|47个过程组:项目整体管理|指导与管理项目执行
  8. 【Elasticsearch入门】Elasticsearch集群管理
  9. GUI设计之马的遍历
  10. Python学习之numpy生成矩阵基础用法