原本由于项目需求在 Linux 下学习过一段时间的 GTK+2.0 图形开发,时隔一段时间,想真正深入学习一下 GTK 。

这次直接从头学习 GTK+-3.0 ,并写下博文便于日后查看,也方便新手入门。

  安装环境参考:

    Fedora:http://www.cnblogs.com/watsonlong/archive/2011/04/06/2006989.html

    Ubuntu:http://www.cnblogs.com/niocai/archive/2011/07/15/2107472.html

    Arch    :直接执行 sudo pacman -S gtk3 即可。

  注意采用的是GTK3,上文中大部分是GTK2,注意同样的方式安装GTK3。

 

 首先学习到的便是创建一个空白的窗口。我们创建一个名为 example.c 的源文件。内容如下

 #include <gtk/gtk.h>            //每个GTK程序都要包含的头文件,里面申明了很多类型,函数原型等

 static void activate (GtkApplication *app , gpointer data)
{
GtkWidget *window; //申明一个窗口 window = gtk_application_window_new(app); //为app创建一个窗口 gtk_window_set_title(GTK_WINDOW(window) , "Application"); //设置窗口的标题
gtk_window_set_default_size(GTK_WINDOW(window) , , ); //设置窗口默认大小为长宽各200像素
gtk_widget_show_all(window); //显示窗口
} int main(int argc , char **argv) //主函数
{
GtkApplication *app; //申明创建一个 GtkApplicatin对象名为app
int app_status; //用于拿到app 运行结束后的返回值 app = gtk_application_new("org.rain.gtk" , G_APPLICATION_FLAGS_NONE); //创建一个application
g_signal_connect(app , "activate" , G_CALLBACK(activate) , NULL); //连接信号,初始化app时,调用 activate 函数
app_status = g_application_run(G_APPLICATION(app) , argc , argv); //运行app g_object_unref(app); //销毁app return app_status;
}

  如下方式编译源文件,并执行生成的example可执行文件。

gcc example.c `pkg-config --cflags --libs gtk+-3.0` -Wall -o example
./example

  运行结果如下:

aaarticlea/png;base64,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" alt="" />

Linux 下从头再走 GTK+-3.0 (一)的更多相关文章

  1. Linux 下从头再走 GTK+-3.0 (五)

    实践中表明,纯粹利用 gtk 函数来创建 UI 是很繁琐的事,需要编写很多代码.怎样才能快速统一的建立 UI 布局呢? 可喜的是 GTK 提供了一个 GtkBuilder 用于快速创建界面.它读取一个 ...

  2. Linux 下从头再走 GTK+-3.0 (三)

    之前我们为窗口添加了一个按钮,接下来让这个按钮丰富一点.并给窗口加上图标. 首先创建 example3,c 的源文件. #include <gtk/gtk.h> static void a ...

  3. Linux 下从头再走 GTK+-3.0 (六)

    在 GTK3 中增加了一个 GtkApplicaton 类,便于我们处理多窗口程序,同时有了 GtkApplication 我们也更容易创建灵活,易用,界面美观的应用程序. 在前面的几个例子中,演示了 ...

  4. Linux 下从头再走 GTK+-3.0 (四)

    实际的应用中,往往有很多个控件, 同样GTK提供了很多种布局方案,Box, Fixed , Table , Grid 等. 接下来试试网格布局 Grid. 我们创建 example4.c ,内容如下: ...

  5. Linux 下从头再走 GTK+-3.0 (二)

    仅仅创建一个空白窗口是不够的,下面我们为创建的窗口添加一个按钮. 以 Hello,World!为例. 首先创建一个源文件:example2.c 内容如下. #include <gtk/gtk.h ...

  6. Linux下安装二进制版mysql-8.0.15

    1.添加用户## 添加用户组groupadd mysql## 添加用户,指定用户home目录useradd -g mysql mysql -d /data/mysql## 解压下载的mysql二进制包 ...

  7. linux下安装mysql5.7(centos6.0)

    注:因为网络原因,这个mysql安装是我以前在学校的时候找到的一个安装包,不过也找到了下载的地址:http://www.itmop.com/downinfo/143061.html下载完成后,把文件上 ...

  8. linux下如何编译安装gcc-8.3.0

    1. 获取源码 wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz -P ~ tar xvf gcc-8.3.0.t ...

  9. linux下使用yum安装新版php7.0

    这两天又装了一下虚拟机,又要编译lnmp,还要弄各种拓展,很麻烦,能不能直接yum安装呢?答案是可以的! 1.首先要更新yum源,不然是默认的老版本,一般都在5.6及以下,但是php7都出来好久了,性 ...

随机推荐

  1. nginx 在ubuntu 上的启动,停止,重启

    vi 显示行号 :set num 在开始玩nginx之前,得先安装nginx,可以参考 <ubuntu15.10_x64 安装 nginx>   启动 sudo /usr/local/ng ...

  2. 未来的 Web:九个不可思议的 WebGL 应用试验

    WebGL 技术允许把 JavaScript 和 OpenGL ES 2.0 结合在一起,通过增加 OpenGL ES 2.0 的一个 JavaScript 绑定,WebGL 可以为 HTML5 Ca ...

  3. sass菜鸟教程

    1.安装sass 在安装sass前需要安装ruby,下载ruby时要注意自己电脑是32位还是64位,下载好正常安装,但注意一下:要勾选下图这一项,添加环境变量(安装过JDK的朋友应该知道环境变量) 下 ...

  4. Hybrid框架UI重构之路:三、工欲善其事,必先利其器

    上文回顾:Hybird框架UI重构之路:二.事出有因 工欲善其事,必先利其器,事是重构的目标,器是开发环境. 这篇文章将讲述重构时的UI框架的目录结构,且需要使用的开发工具. 目录结构 demo : ...

  5. JavaScript中的普通函数与构造函数比较

    问题 什么是构造函数?构造函数与普通函数区别是什么?用new关键字的时候到底做了什么?构造函数有返回值怎么办?构造函数能当普通函数调用吗? thisthis永远指向当前正在被执行的函数或方法的owne ...

  6. Kali Linux (XFce版本)安装后的一些设置

    kali Linux的主版本自带的是Gnome桌面环境,安装后使用效率太低,不知道是不是我机器配置低的原因, 在虚拟机里运行起来太慢.卡.丑啦....所以以前都一直都在用Backbox Linux,并 ...

  7. GitHub学习心得之 安装配置与多帐号管理

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 GitHub学习心得之 安装配置与多帐号管理 1.前言2.GitHub Linux安装(ub ...

  8. Autodesk 最新开发技术研讨会-北京-上海-武汉-成都-西安-PPT下载

    经过半月的奔波,转遍祖国大好河山.结论,还是喜欢成都,安逸~,好希望能在成都生活,竹林里品茶,不亦乐乎~ 如果你没能参加我们的研讨会,下面的PPT供参考: 面向世界.面向未来 – Autodesk 云 ...

  9. .frame类库简单介绍与使用

    .a静态库是Unix推出的,几乎所有平台都可以使用: .framework是Apple推出的,是对.a静态库的封装,方便使用. 1.新建framework类库项目 2.生成的类库中,自定义的源头文件需 ...

  10. [转]Android逆向之动态调试总结

    一.在SO中关键函数上下断点 刚学逆向调试时.大多都满足于在SO中某关键函数上下断点.然后通过操作应用程序,去触发这个断点,然后进行调试 详细的步骤可以参见非虫大大的<Android软件安全与逆 ...